【发布时间】:2012-02-22 00:48:34
【问题描述】:
我有三个选项卡,每个选项卡都扩展了 Activity 并实现了 View.OnClickListener 当我选择某个选项卡并单击一个按钮时,在 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);
}
}
//标签A活动
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); - 为什么不只是“这个”?
-
是一回事。但是这样“TabAActivity.this”最容易看到你指的是什么。
-
让我的大脑按照“我想知道这是否以某种方式对类而不是我当前所在类的实例有什么作用”的线条打动了我的大脑。如果你修改一些东西,也有可能破坏多态性。不过,我不认为这是问题:-(
标签: android button tabs android-tabhost onclicklistener