0

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 が現在のアクティビティであることを示しているため、なぜこれが起こっているのか少しわかりません。StoreActivity のコードでボタンの onClickListener を定義することでこれを回避できますが、可能であれば避けたいと思います。

4

2 に答える 2

0

私はこれを解決しました。この問題は、このコードとは無関係でした。私は自分の活動に共通の基本クラスを持っていたので、誤ってインフレータをシングルトンにしてしまいました。これは、すべての膨張したレイアウトが、そのシングルトン インスタンスを作成した最初のクラスに属していたことを意味していました。このクラスは、たまたま onClick イベントを誤って受け取っていたクラスでした。そのシングルトンを削除すると、これが解決されました。

于 2011-06-14T15:23:49.093 に答える
0

これは、サブアクティビティではなく親アクティビティから 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.
}
于 2011-06-13T14:57:54.923 に答える