从另一个活动调用一个方法(称为片段)
我呼吁方法:从另一个活动调用一个方法(称为片段)
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 cannot be cast to com.chiv.successteritory.activities.MainActivity
怎么称呼?在此先感谢
如果你是在MainActivity
并启动AskLikeQuestionDetailsActivity
,它不能保证MainActivity
仍然存在,作为操作系统可以垃圾收集背景的任何活动。
如果你想在MainActivity
更改Fragment
的ask()
方法被调用AskLikeQuestionDetailsActivity
后,我会建议你做以下几点:
在MainActivity
,而不是调用startActivity
开始AskLikeQuestionDetailsActivity
,叫startActivityForResult
和覆盖onActivityResult
根据收到的结果更改Fragment
的方法。
在AskLikeQuestionDetailsActivity
的ask()
,调用setResult
与Activity.RESULT_OK
和配置Intent
发送一些信息反馈给MainActivity
,然后调用finish()
(如果你有退出AskLikeQuestionDetailsActivity
Activity
马上)。
是否清楚?希望能帮助到你。
谢谢,这是我理解的一个选项,但不知道如何实现。 主要任务是调用片段:QuestionsFragment – Forme
但是,为什么您需要直接从另一个Activity的另一个Fragment调用另一个方法的方法(它甚至可能在您需要的时候甚至不在内存中)? –
可以不直接打电话。运行代码后 - [链接](https://docs.google.com/file/d/0B30eXgoSJlFsZWdqQ2ljS3A2Rnc/edit)我必须打开片段 - [link](https://docs.google.com/file/ d/0B30eXgoSJlFsSWtFNFFFaDNEZFk /编辑) – Forme
在问()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();
}
在这个麻烦'(MainActivity)getActivity()' –
尝试'(AskLikeQuestionDetailsActivity)getActivity( )' –
@LiaPronina但是这个类很可能没有'switchContent'方法。 – m0skit0