【问题标题】:How to call function containing intent (in Activity A) from Activity B如何从活动 B 调用包含意图的函数(在活动 A 中)
【发布时间】:2018-02-27 11:45:07
【问题描述】:

当按下后退按钮时,我正在从活动中调用一个函数(存在于片段中)

public void onBackPressed() {
    new Home().show(Home.home_list,app.this);                   
}

首页是应用活动的片段

在显示函数中我正在调用一个意图

public void show(final ArrayList<tile_data> data, final Activity activity) {
    startActivity(new Intent(activity, Chat_topic_layout_for_user_group.class)
}

这样做会给我错误:java.lang.IllegalStateException: Fragment Home{5deabab} not attach to Activity

我的结论是应用程序使用 show 作为函数,所以它不知道 home。

所以我的问题是如何调用某个活动中某个函数中存在的“意图”或来自其他活动的片段??

【问题讨论】:

标签: java android android-fragments android-intent


【解决方案1】:

看起来startActivity 没有在正确的范围内被调用。尝试指定范围并像这样调用它:activity.startActivity(new Intent(activity, Chat_topic_layout_for_user_group.class)

【讨论】:

  • 是的,我错过了范围。我一直在添加第一个意图参数。没想过改变范围。
【解决方案2】:

为什么不将Show() 函数移至Activity?并为标题在Home fragmentgetTitles() 中创建一个getter 函数。现在,当事件发生时,直接在传递(*HomeFragment*.getTitle() , *Activity*.this) 的活动中触发Show() 函数。你的头衔是static吗?因为你直接打电话给new Home()。如果是这种情况,在活动中调用Show() 函数不会有任何问题。如果这不符合标准,您可以详细说明您的要求。

【讨论】:

  • 是的,这是个好主意。但是show函数中还涉及到很多其他的参数,这些参数只和home相关。 Show 功能正在使用它们,因此我无法将其移至应用程序。
【解决方案3】:
public void show(final ArrayList<tile_data> data, final Activity activity) {
    activity.startActivity(new Intent(activity, Chat_topic_layout_for_user_group.class));
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-30
    • 2021-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-26
    • 2020-06-14
    相关资源
    最近更新 更多