我叫方法:
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
怎么打电话?提前谢谢
答案 0 :(得分:2)
如果您在MainActivity
并启动AskLikeQuestionDetailsActivity
,则无法保证MainActivity
仍然存在,因为操作系统可以在后台垃圾收集任何活动。
如果您希望在Fragment
上调用MainActivity
方法后ask()
更改AskLikeQuestionDetailsActivity
,我建议您执行以下操作:
在MainActivity
,而不是致电startActivity
开始AskLikeQuestionDetailsActivity
,请致电startActivityForResult
并覆盖onActivityResult
方法以更改Fragment
收到的结果。
在AskLikeQuestionDetailsActivity
的{{1}}上,使用ask()
和已配置的setResult
致电Activity.RESULT_OK
,将一些信息发送回Intent
,然后致电MainActivity
(如果您必须立即退出finish()
AskLikeQuestionDetailsActivity
)。
清楚吗?希望它有所帮助。
答案 1 :(得分: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();
}