简体   繁体   English

从另一个Activity调用方法(调用Fragment)

[英]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: 如果你想改变一个FragmentMainActivityask()方法被调用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). AskLikeQuestionDetailsActivityask() ,调用带有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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM