【问题标题】:Subactivity onClick Firing in Parent Class父类中的子活动 onClick Firing
【发布时间】:2023-04-04 05:26:01
【问题描述】:

我在 ActivityGroup 的子活动中的 onClick 处理程序遇到了一些问题。

我正在使用以下方式启动 StoreActivity:

Intent storeIntent = new Intent(this, StoreActivity.class);
storeIntent.putExtra(StoreActivity.INTENT_STORE_ID, storeId);

View newVeiw = getLocalActivityManager().startActivity("StoreActivity", storeIntent).getDecorView();
setContentView(newVeiw);

Log.e("DEBUG", "current activity: " + getLocalActivityManager().getCurrentActivity().toString());

在 StoreActivity 布局中,我有一个定义 onClick 方法的按钮。然而,出于某种原因,它试图在启动 StoreActivity 的父类中调用它。启动活动时我做错了吗?上面 Log.e 的输出表明 StoreActivity 是当前活动,所以我有点不知道为什么会这样。我可以通过在 StoreActvity 的代码中为按钮定义一个 onClickListener 来解决这个问题,但如果可能的话,我想避免这种情况。

【问题讨论】:

  • 你在 storeActivity 类中有什么代码

标签: android android-intent onclick subactivity


【解决方案1】:

我认为这是因为您从父活动而不是子活动调用 setContentView。为什么不直接在意图中启动活动并在新活动中设置内容视图?会简单很多。

试试这个:

Intent storeIntent = new Intent(this, StoreActivity.class);
storeIntent.putExtra(StoreActivity.INTENT_STORE_ID, storeId);
startActivity(storeIntent);

然后在 StoreActivity.java 中做:

@Override
public void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   View newVeiw = getLocalActivityManager().startActivity("StoreActivity", storeIntent).getDecorView();

    setContentView(newView); //not sure if this would work, would probably be easier to put your xml layout file in here.
}

【讨论】:

  • 对不起,我忘了提到这是在单个选项卡式布局中发生的。不幸的是,我无法使用 startActivity 启动活动,因为它需要保留 ActivityGroup 的成员,以便它在与父级相同的选项卡中加载。如果我调用它,它将用新活动替换整个屏幕。
【解决方案2】:

好的,我已经解决了这个问题。该问题与任何此代码无关。我的活动有一个共同的基类,我不小心把充气机做成了单件。这意味着所有膨胀的布局都属于创建该单例实例的第一个类,而该类恰好是错误地接收 onClick 事件的类。删除那个单例解决了这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-04
    • 1970-01-01
    • 2013-03-17
    • 1970-01-01
    • 2019-01-17
    • 2014-02-03
    • 2012-03-28
    相关资源
    最近更新 更多