0

我已经调用了方法:

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):致命异常:主要 08-21 17:16:28.574:E/AndroidRuntime(26360):java.lang.ClassCastException:com.chiv.successteritory.activities。 AskLikeQuestionDetailsActivity 不能转换为 com.chiv.successteritory.activities.MainActivity

怎么打电话?提前致谢

4

2 回答 2

2

如果您打开MainActivity并启动AskLikeQuestionDetailsActivity,则不能保证它MainActivity仍然存在,因为操作系统可以垃圾收集后台的任何活动。

如果您想在调用方法后更改Fragmenton ,我建议您执行以下操作:MainActivityask()AskLikeQuestionDetailsActivity

On MainActivity,而不是调用startActivitystart AskLikeQuestionDetailsActivity,调用startActivityForResult并覆盖onActivityResult方法来更改Fragment取决于收到的结果。

OnAskLikeQuestionDetailsActivityask(), 调用setResultActivity.RESULT_OKa 配置Intent为将一些信息发送回MainActivity, 然后调用finish()(如果你必须立即退出AskLikeQuestionDetailsActivity Activity)。

清楚吗?希望能帮助到你。

于 2013-08-21T15:26:50.907 回答
0

在 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();
    }
于 2013-08-22T06:29:50.810 回答