父类中的子活动onClick Firing

时间:2011-06-13 12:53:56

标签: android android-intent onclick subactivity

我在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来解决这个问题,但我想尽可能避免这种情况。

2 个答案:

答案 0 :(得分:0)

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

试试这个:

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.
}

答案 1 :(得分:0)

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