簡體   English   中英

從另一個Activity調用方法(調用Fragment)

[英]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仍然存在,因為操作系統可以在后台垃圾收集任何活動。

如果你想改變一個FragmentMainActivityask()方法被調用AskLikeQuestionDetailsActivity ,我會建議你做以下幾點:

MainActivity ,不是調用startActivity來啟動AskLikeQuestionDetailsActivity ,而是調用startActivityForResult並覆蓋onActivityResult方法以根據收到的結果更改Fragment

AskLikeQuestionDetailsActivityask() ,調用帶有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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM