3つのタブがあり、それぞれアクティビティを拡張して実装します。View.OnClickListener Someタブを選択してボタンをクリックすると、SomeTabActivityに実装されたOnClickListenerは機能しません。どうして? 私の活動を作成するために必要なことは? タブを選択するたびに新しいアクティビティを開始する必要がありますか?異なるタブ内のボタン
マイコード:
//主な活動
public class TripoidActivity extends TabActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
init();
}
private void init() {
final TabHost tabHost = (TabHost) findViewById(android.R.id.tabhost);
tabHost.setup();
final Resources res = getResources();
createTabA(tabHost, res);
createTabB(tabHost, res);
createTabC(tabHost, res);
}
}
//タブ活動
public class TabAActivity extends Activity implements View.OnClickListener {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
init();
}
private void init() {
buttonAddItem = (Button) findViewById(R.id.btAddItem);
buttonAddItem.setOnClickListener(TabAActivity.this);
}
@Override
public void onClick(View v) {
//do something (show a toast msg)
}
}
//メインのレイアウトXML
<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:padding="5dp" >
<TabWidget
android:id="@android:id/tabs"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="5dp" >
<include layout="@layout/tab_a" />
<include layout="@layout/tab_b" />
<include layout="@layout/tab_c" />
</FrameLayout>
</LinearLayout>
</TabHost>
なぜbuttonAddItem.setOnClickListener(TabAActivity.this)。なぜ「これ」だけではないのですか? – John3136
同じことです。しかし、このように "TabAActivity.this"は、あなたが何を参照するのが最も簡単です。 –
私の頭脳は、 "これは何とか私が現在いるクラスのインスタンスではなく、クラスで何かをするかどうか疑問に思っています。また、事柄を変更した場合、ポリモーフィズムを破る可能性があります。しかし、私はこれが問題だとは思っていません:-( – John3136