Android:从TabHost启动新活动将禁用onClick
我有一个包含4个选项卡的选项卡活动。单击其中一个选项卡中的按钮并启动新活动时,如果新活动不在TabHost中,则新活动不会在单击时注册。新的活动甚至不能显示祝酒词,这让我觉得TabHost在某种程度上阻塞了ui 将活动作为选项卡之一时,OnClick工作正常。 你知道这是什么原因吗 我包括了3个课程: 1禁忌活动 2选项卡中开始的活动: 3无法注册OnClick的新活动 1.活动:Android:从TabHost启动新活动将禁用onClick,android,onclick,android-tabhost,Android,Onclick,Android Tabhost,我有一个包含4个选项卡的选项卡活动。单击其中一个选项卡中的按钮并启动新活动时,如果新活动不在TabHost中,则新活动不会在单击时注册。新的活动甚至不能显示祝酒词,这让我觉得TabHost在某种程度上阻塞了ui 将活动作为选项卡之一时,OnClick工作正常。 你知道这是什么原因吗 我包括了3个课程: 1禁忌活动 2选项卡中开始的活动: 3无法注册OnClick的新活动 1.活动: public class OverView extends TabActivity { @Overrid
public class OverView extends TabActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_overview);
/** TabHost will have Tabs */
TabHost tabHost = (TabHost)findViewById(android.R.id.tabhost);
/** TabSpec used to create a new tab.
* By using TabSpec only we can able to setContent to the tab.
* By using TabSpec setIndicator() we can set name to tab. */
/** tid1 is firstTabSpec Id. Its used to access outside. */
TabSpec Search = tabHost.newTabSpec("tid1");
TabSpec AllArtists = tabHost.newTabSpec("tid1");
TabSpec Favorites = tabHost.newTabSpec("tid1");
TabSpec About = tabHost.newTabSpec("tid1");
/** TabSpec setIndicator() is used to set name for the tab. */
Search. setIndicator("Search");
AllArtists. setIndicator("AllArtists");
Favorites. setIndicator("Favorites");
About. setIndicator("About");
/** TabSpec setContent() is used to set content for a particular tab. */
Search.setContent (new Intent(this, Search.class));
AllArtists.setContent (new Intent(this, AllArtists.class));
Favorites.setContent (new Intent(this, Favorites.class));
About.setContent (new Intent(this, About.class));
/** Add tabSpec to the TabHost to display. */
tabHost.addTab(Search);
tabHost.addTab(AllArtists);
tabHost.addTab(Favorites);
tabHost.addTab(About);
}
}
public class AllArtists extends Activity {
// Debug
private final String TAG = this.getClass().getSimpleName();
// XML
EditText searchBox;
ListView listView;
// Adapter
ListAdapter listAdapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_allartists);
listAdapter = new ListAdapter(this, null);
// XML
listView = (ListView)findViewById(R.id.allartists_listview);
searchBox = (EditText)findViewById(R.id.allartists_searchbox);
listView.setAdapter(listAdapter);
listView.setFastScrollEnabled(true);
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String memberID = (String)listAdapter.getID(position).toString();
if (!memberID.equals("HEADER")){
Log.d(TAG, "Jumping to Artists.class");
Intent intentArtist = new Intent (AllArtists.this, Artist.class);
intentArtist.putExtra("ID", memberID);
startActivity(intentArtist);
}
}
});
}
2所有人在选项卡中列出活动。单击列表项可启动新活动:
public class AllArtists extends Activity {
// Debug
private final String TAG = this.getClass().getSimpleName();
// XML
EditText searchBox;
ListView listView;
// Adapter
ListAdapter listAdapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_allartists);
listAdapter = new ListAdapter(this, null);
// XML
listView = (ListView)findViewById(R.id.allartists_listview);
searchBox = (EditText)findViewById(R.id.allartists_searchbox);
listView.setAdapter(listAdapter);
listView.setFastScrollEnabled(true);
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String memberID = (String)listAdapter.getID(position).toString();
if (!memberID.equals("HEADER")){
Log.d(TAG, "Jumping to Artists.class");
Intent intentArtist = new Intent (AllArtists.this, Artist.class);
intentArtist.putExtra("ID", memberID);
startActivity(intentArtist);
}
}
});
}
谢谢, 敬酒时,您需要打电话给show
Toast.makeText(this, "OK, your in Activity_Artist..", Toast.LENGTH_SHORT).show();
对于除按钮之外的任何对象的单击操作,您需要定义
android:clickable="true"
在布局中。解决了这个问题。在布局中,在布局的底部有一个空的GridView,设置为android:layout\u height=fill\u parent,它偷走了touchevent
奇怪的是,当将完全相同的活动和完全相同的XML放在选项卡中时,onClick工作得很好。Hhaha这不是我第一次忘记添加.show。事实上,我从来没有使用过android:clickable=true,而且我从来没有在可点击方面遇到过任何问题。默认值不是设置为true吗?除此之外,我看不出为什么不发布click事件的任何原因,因为这不是TabHost活动的一部分,onClick应该在该活动本身中使用。