gpt4 book ai didi

android - 如何为同一选项卡调用选项卡 Onclick 和 OnTabChange

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:07:08 25 4
gpt4 key购买 nike

在我的项目中,我有两个选项卡和一个按钮。对于两个选项卡,我有两个 Activity 和调用不同 Activity 的按钮。问题是我在第一个选项卡上显示按钮的结果。即 tab0 在 tab0Event 和按钮单击事件上也是 Activity 的。并且能够使用 tabHost.setOnTabChangedListener 更改选项卡事件,但现在我进一步想要的是,假设我单击按钮,所以现在显示按钮 View (tab0 处于 Activity 状态)但是如果我再次单击 tab0,tab0 Activity 应该是显示。

我尝试了很多点击标签的解决方案,一个是

getTabWidget().getChildAt(getTabHost().getCurrentTab()).setOnClickListener
(new View.OnClickListener() {

@Override public void onClick(View v) {
System.out.println(getTabHost().getCurrentTab());

} });

但是当我将此代码与 tabChnageListner 一起使用时,制表符更改不起作用并且我得到了非常意外的结果。你能为我的问题提出解决方案吗?

谢谢。

适用于选项卡更改的代码如下:(适用于选项卡更改,需要在其中添加 Tab Onclick)

public class TabLayoutUsingTabChangeEventActivity extends TabActivity {

@Override
public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final TabHost tabHost = (TabHost)findViewById(android.R.id.tabhost);
final TabHost.TabSpec sp1 = tabHost.newTabSpec("TAB1");
TabHost.TabSpec sp2 = tabHost.newTabSpec("TAB2");

//Creating First Tab
Intent intent1 = new Intent(this, Tab1Activity.class);
sp1.setIndicator("TAB1").setContent(intent1);
tabHost.addTab(sp1);

//Creating Second Tab
Intent intent2 = new Intent(this, Tab2Activity.class);
sp2.setIndicator("TAB2").setContent(intent2);
tabHost.addTab(sp2);

//Tab Changed Event
tabHost.setOnTabChangedListener(new OnTabChangeListener(){
@Override
public void onTabChanged(String tabId) {
Log.i("TabId :", tabId);
if(tabId.equals("TAB2")){
Log.i("TAB1", "TAB1 Changed");
Intent intent1 = new Intent().setClass(getApplicationContext(), Tab1Activity.class);
sp1.setIndicator("TAB1").setContent(intent1);
tabHost.setCurrentTab(0);
}
}
});

Button addNewButton = (Button)findViewById(R.id.add_new_ticket_btn);
addNewButton.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
Intent in = new Intent().setClass(getApplicationContext(), AddNewTicketActivity.class);
sp1.setContent(in);
tabHost.setCurrentTab(0);
//startActivity(in);
}
});
}
}

最佳答案

你可以实现这个监听器:

    host.setOnTabChangedListener(new OnTabChangeListener()
{
@Override
public void onTabChanged(String tabId)
{
if (getTabHost().getCurrentTabTag().equals("tab0"))
{
host.getCurrentTabView().setOnTouchListener(
new OnTouchListener()
{
@Override
public boolean onTouch(View v, MotionEvent event)
{
if (event.getAction() == MotionEvent.ACTION_DOWN)
{
if (getTabHost().getCurrentTabTag().equals("tab0")
{
getTabHost().setCurrentTabByTag("tab1");
getTabHost().setCurrentTabByTag("tab0");
}
return false;
}
return false;
}
});
}
}
});

此外,当您为每个选项卡添加选项卡集标签时:

host.addTab(host.newTabSpec("tab0"));
host.addTab(host.newTabSpec("tab1"));

关于android - 如何为同一选项卡调用选项卡 Onclick 和 OnTabChange,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8311236/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com