這就是問題所在。我在一個活動中有 7 個按鈕,在另一個活動中有 7 個選項卡/片段。7 個標簽/片段是可滑動的。我想讓按鈕能夠打開它們各自的標簽。例如,單擊按鈕 1 將重定向到選項卡/片段 1,單擊按鈕 2 將打開選項卡/片段 2,等等。那么,如何使按鈕按預期作業?任何答案或想法將不勝感激。先感謝您。
這是我的代碼:
TabbedActivity.java
public class TabbedActivity extends AppCompatActivity {
TabLayout tabLayoutaa;
ViewPager2 pager2aa;
FragmentAdapter adapteraa;
int value;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tabbed);
tabLayoutaa = findViewById(R.id.tab_layoutaa);
pager2aa = findViewById(R.id.view_pager2aa);
FragmentManager fm = getSupportFragmentManager();
adapteraa = new FragmentAdapter(fm, getLifecycle());
pager2aa.setAdapter(adapteraa);
tabLayoutaa.setTabMode(tabLayoutaa.MODE_SCROLLABLE);
tabLayoutaa.addTab(tabLayoutaa.newTab().setText("Tab 1"));
tabLayoutaa.addTab(tabLayoutaa.newTab().setText("Tab 2"));
tabLayoutaa.addTab(tabLayoutaa.newTab().setText("Tab 3"));
tabLayoutaa.addTab(tabLayoutaa.newTab().setText("Tab 4"));
tabLayoutaa.addTab(tabLayoutaa.newTab().setText("Tab 5"));
tabLayoutaa.addTab(tabLayoutaa.newTab().setText("Tab 6"));
tabLayoutaa.addTab(tabLayoutaa.newTab().setText("Tab 7"));
tabLayoutaa.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
pager2aa.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
pager2ah.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
@Override
public void onPageSelected(int position) {
tabLayoutaa.selectTab(tabLayoutaa.getTabAt(position));
}
});
}
}
ButtonList.java
public class ButtonList extends AppCompatActivity {
private Button btntotab1;
private Button btntotab2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_buttonlist);
btntotab1 = (Button)findViewById(R.id.btntotab1);
btntotab1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
openTab1();
}
});
}
public void openTab1(){
Intent intent = new Intent(this, TabbedActivity.class);
startActivity(intent);
}
}
uj5u.com熱心網友回復:
在 Android IDE 的右側面板中搜索每個按鈕的 onclick 屬性。將您的標簽更改功能放在那里。在 Main Activity 中,在按鈕函式比較 id 中使用 switch 陳述句。
在 xml 中每個按鈕的 onclick 屬性中使用相同的功能
就像在 MainActivity 你有函式: openTab() 一樣。
public void OpenTab(View view)
{
switch view.getId()
{
case r.id.xx:
// Your working
break;
}
}
uj5u.com熱心網友回復:
首先,將您的 buttonId 傳遞給包含所有選項卡/片段的 Activity。
按鈕串列.java
public class ButtonList extends AppCompatActivity {
private Button btntotab1;
private Button btntotab2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_buttonlist);
btntotab1 = (Button)findViewById(R.id.btntotab1);
btntotab1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
openTab(1);
}
});
btntotab2 = (Button)findViewById(R.id.btntotab2);
btntotab2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
openTab(2);
}
});
}
public void openTab(int buttonId){
Intent intent = new Intent(this, TabbedActivity.class);
intent.putExtra("button_id",buttonId);
startActivity(intent);
}
}
現在將該 buttonId 傳遞給 fragmentManager 或您的 viewPager。
標簽式Activity.java
public class TabbedActivity extends AppCompatActivity {
TabLayout tabLayoutaa;
ViewPager2 pager2aa;
FragmentAdapter adapteraa;
int value, buttonId;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tabbed);
tabLayoutaa = findViewById(R.id.tab_layoutaa);
pager2aa = findViewById(R.id.view_pager2aa);
buttonId=getIntent().getIntExtra("button_id",0); // to get the button id
FragmentManager fm = getSupportFragmentManager();
adapteraa = new FragmentAdapter(fm, getLifecycle());
pager2aa.setAdapter(adapteraa);
tabLayoutaa.setTabMode(tabLayoutaa.MODE_SCROLLABLE);
tabLayoutaa.addTab(tabLayoutaa.newTab().setText("Tab 1"));
tabLayoutaa.addTab(tabLayoutaa.newTab().setText("Tab 2"));
tabLayoutaa.addTab(tabLayoutaa.newTab().setText("Tab 3"));
tabLayoutaa.addTab(tabLayoutaa.newTab().setText("Tab 4"));
tabLayoutaa.addTab(tabLayoutaa.newTab().setText("Tab 5"));
tabLayoutaa.addTab(tabLayoutaa.newTab().setText("Tab 6"));
tabLayoutaa.addTab(tabLayoutaa.newTab().setText("Tab 7"));
pager2aa.setCurrentItem(buttonId-1); // to get the current Tab
tabLayoutaa.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
pager2aa.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
pager2ah.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
@Override
public void onPageSelected(int position) {
tabLayoutaa.selectTab(tabLayoutaa.getTabAt(position));
}
});
}
}
您還可以使用 switch case 來獲取選定的選項卡,如果它不起作用,則將其傳遞給片段管理器。可能有一些語法錯誤,所以要小心。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/342630.html
上一篇:具有兩個背景的影片按鈕
