[英]Multiple Intent flags for starting a new Activity in Android
我試圖在Intent上添加更多標志,以在BroadcastReceiver內啟動新的Activity,以響應從應用程序另一部分發送的特定Intent。 正如我從LogCat消息中注意到的那樣,我已經添加了我創建的Intent的FLAG_ACTIVITY_NEW_TASK
標志,然后添加了其他標志,但是在LogCat中我得到了與FLAG_ACTIVITY_NEW_TASK
相同的錯誤。
這是代碼:
public class actReceiver extends BroadcastReceiver {
...
public void onReceive(Context context, Intent intent) {
...
else if (intent.getAction().equals("something")) {
Intent prefAct = new Intent(context, PreferencesActivity.class)
prefAct.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
.setFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS)
.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY)
.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(prefAct);
}
... }
... }
以及特定的LogCat錯誤:
Caused by: android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
setFlags
只是分配參數,如您在代碼段中所見
public Intent setFlags(int flags) {
mFlags = flags;
return this;
}
因此,根據您的情況,您只分配了最后一個。 要修復它,請放在或
prefAct.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS | Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_SINGLE_TOP);
或使用執行相同功能的addFlags
public Intent addFlags(int flags) {
mFlags |= flags;
return this;
}
使用addFlags()
而不是setFlags()
來添加其他標志。
http://developer.android.com/reference/android/content/Intent.html#addFlags(int)
setFlags()
設置要使用的完整標志集,因此您必須|
在此使用的所有標志。 addFlags()
可以多次調用,並且|
為您的標志。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.