我在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来解决这个问题,但我想尽可能避免这种情况。
答案 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事件的类。删除该单例解决了这个问题。