[英]Calling a method from another Activity (call Fragment)
I have called method: 我叫做方法:
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 MainActivity: https ://docs.google.com/file/d/0B30eXgoSJlFsczNSdkE5Qnc5eG8/edit ? usp = sharing
Error: 错误:
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
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
how to call? 怎么称呼? thanks in advance
提前致谢
If you are on MainActivity
and starts the AskLikeQuestionDetailsActivity
, it's not guaranteed that MainActivity
is still there, as the OS can garbage collect any Activities on background. 如果您使用
MainActivity
并启动AskLikeQuestionDetailsActivity
,则无法保证MainActivity
仍然存在,因为操作系统可以在后台垃圾收集任何活动。
If you want change a Fragment
on MainActivity
after the ask()
method is called on AskLikeQuestionDetailsActivity
, I would suggest you to do the following: 如果你想改变一个
Fragment
上MainActivity
后ask()
方法被调用AskLikeQuestionDetailsActivity
,我会建议你做以下几点:
On MainActivity
, instead of calling startActivity
to start AskLikeQuestionDetailsActivity
, call startActivityForResult
and override the onActivityResult
method to change the Fragment
depending on the result received. 在
MainActivity
,不是调用startActivity
来启动AskLikeQuestionDetailsActivity
,而是调用startActivityForResult
并覆盖onActivityResult
方法以根据收到的结果更改Fragment
。
On AskLikeQuestionDetailsActivity
's ask()
, call setResult
with Activity.RESULT_OK
and a configured Intent
to send some information back to MainActivity
, then call finish()
(if you have to exit the AskLikeQuestionDetailsActivity
Activity
right away). 在
AskLikeQuestionDetailsActivity
的ask()
,调用带有Activity.RESULT_OK
setResult
和一个配置的Intent
将一些信息发送回MainActivity
,然后调用finish()
(如果你必须立即退出AskLikeQuestionDetailsActivity
Activity
)。
Is it clear? 清楚吗? Hope it helps.
希望能帮助到你。
In ask() AskLikeQuestionDetailsActivity: 在ask()AskLikeQuestionDetailsActivity:
Intent intent = new Intent(getActivity(), MainActivity.class);
int condition = 1;
intent.putExtra("condition", condition);
startActivity(intent);
In onCreate() MainActivity.class: 在onCreate()MainActivity.class中:
Bundle extras = getIntent().getExtras();
if (extras != null) {
showQuestions();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.