[英]Calling a method from another Activity (call Fragment)
我叫做方法:
protected void ask(){
Fragment newContent = new QuestionsFragment();
((MainActivity) getActivity()).switchContent(newContent, R.string.questions, MenuFragment.questions_id, BottomActionBarMode.QUESTIONS);
}
MainActivity: https ://docs.google.com/file/d/0B30eXgoSJlFsczNSdkE5Qnc5eG8/edit ? usp = sharing
錯誤:
08-21 17:16:28.574:E / AndroidRuntime(26360):FATAL EXCEPTION:main 08-21 17:16:28.574:E / AndroidRuntime(26360):java.lang.ClassCastException:com.chiv.successteritory.activities。 AskLikeQuestionDetailsActivity無法強制轉換為com.chiv.successteritory.activities.MainActivity
怎么稱呼? 提前致謝
如果您使用MainActivity
並啟動AskLikeQuestionDetailsActivity
,則無法保證MainActivity
仍然存在,因為操作系統可以在后台垃圾收集任何活動。
如果你想改變一個Fragment
上MainActivity
后ask()
方法被調用AskLikeQuestionDetailsActivity
,我會建議你做以下幾點:
在MainActivity
,不是調用startActivity
來啟動AskLikeQuestionDetailsActivity
,而是調用startActivityForResult
並覆蓋onActivityResult
方法以根據收到的結果更改Fragment
。
在AskLikeQuestionDetailsActivity
的ask()
,調用帶有Activity.RESULT_OK
setResult
和一個配置的Intent
將一些信息發送回MainActivity
,然后調用finish()
(如果你必須立即退出AskLikeQuestionDetailsActivity
Activity
)。
清楚嗎? 希望能幫助到你。
在ask()AskLikeQuestionDetailsActivity:
Intent intent = new Intent(getActivity(), MainActivity.class);
int condition = 1;
intent.putExtra("condition", condition);
startActivity(intent);
在onCreate()MainActivity.class中:
Bundle extras = getIntent().getExtras();
if (extras != null) {
showQuestions();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.