這是我的非活性類:應用程序類返回空值
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;
}
}
我用一個片段類(friendsId)
應用程序類的數據這不是null。
當我從PostManager
調用應用程序類的數據時,它返回null值。
我試圖看到friendsId
和message
的值Log.e
。但它給了我nullPointer異常。
這是否意味着我在應用程序類的PostManager constructor
中調用的所有值都爲空?如果是,我該怎麼辦?
我需要在我的PostManager
類中的會話,applicationcontext,message,friendsId值。我可以將這些值傳遞給PostManager
,但是這個類別被onReceive()
的alarm class
調用,該類別延伸BroadcastReceiver
,並且此報警是從延伸Fragment
的另一個類別設置的。我需要的所有值都是由這個類創建的,除了friendsId
,我不知道如何從第一課 - >警報類 - > postmanager類傳遞這些值。
在清單報警類:
<application android:name=".SavedFriend"
.......>
....
<receiver android:name="package name.Alarm"/>
....
</application>
謝謝。你知道如何獲得一個活動的上下文,而不是getApplicationContext()方法嗎? @wsanville – Shoshi
如果您需要一個活動,請將其作爲參數傳遞。保持活動的引用通常不是一個好主意,它們的生命週期很容易錯誤地引用一個被破壞的活動。 – wsanville
還有一個問題。如果用戶點擊主頁按鈕或返回按鈕,ApplicationContext會發生什麼?它會自動被操作系統摧毀還是會活着? @wsanville – Shoshi