这是我的非活动课程:
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;
public class PostManager {
private Bundle bundle;
private Context context;
private Session session;
private String victimId=null;
public PostManager() {
SavedFriend savedFriend = new SavedFriend();
bundle = savedFriend.getBundle();
context = savedFriend.getContext();
session = savedFriend.getSession();
victimId = savedFriend.getfriendsId();
Log.e("postManager", victimId);
Log.e("postManager", bundle.getString("message"));
}
}
这是我的应用程序类:
import java.util.List;
import android.app.Application;
import android.content.Context;
import android.os.Bundle;
import com.facebook.Session;
import com.facebook.model.GraphUser;
public class SavedFriend extends Application {
private List<GraphUser> selectedUsers;
private String friendsId;
private Session session;
private Bundle bundle;
private Context context;
public List<GraphUser> getSelectedUsers() {
return selectedUsers;
}
public void setSelectedUsers(List<GraphUser> selectedUsers) {
this.selectedUsers = selectedUsers;
}
public String getfriendsId() {
return friendsId;
}
public void setfriendsId(String id) {
this.friendsId = id;
}
public Session getSession(){
return session;
}
public void setSession(Session session){
this.session = session;
}
public void setContext(Context context){
this.context = context;
}
public Context getContext(){
return context;
}
public void setBundle(Bundle bundle){
this.bundle = bundle;
}
public Bundle getBundle(){
return bundle;
}
}
我已经在不为null的片段类
(friendsId)
中使用了应用程序类的数据。当我从
PostManager
调用应用程序类的数据时,它返回值null。我试图通过
friendsId
查看message
和Log.e
的值。但是它给了我nullPointer异常。这是否意味着我在应用程序类的
PostManager constructor
中调用的所有值都为null?如果是,该怎么办?我需要
PostManager
类中的会话,applicationcontext,消息,friendsId值。我可以将这些值传递给PostManager
,但是该类由onReceive()
的alarm class
调用,该类扩展BroadcastReceiver
,并且此警报是从另一个扩展Fragment
的类设置的。我需要的所有值都是由此类创建的,除了friendsId
,而且我不知道如何从第一类->警报类->后管理器类传递这些值。在警报类清单中:
<application android:name=".SavedFriend"
.......>
....
<receiver android:name="package name.Alarm"/>
....
</application>
最佳答案
您正在创建Application
子类的新实例,因此将不会设置这些成员变量。
相反,您可以使用this question中的方法并存储Application
的易于访问的静态变量。使用类似这样的方法而不是创建一个新实例。