Java Android-在片段中从对话框触发的意图中打开第三个选项卡
我有ALr.java类和FragHandler。FragHandler有Tablayout和viewpager。ALR和FragHandler代码写在下面。我想通过调用activatealert方法打开设置选项卡,这是FragHandler中的第三个选项卡,单击ALR即rl.setonclicklisterner 米夫拉甘德勒班Java Android-在片段中从对话框触发的意图中打开第三个选项卡,java,android,android-fragments,Java,Android,Android Fragments,我有ALr.java类和FragHandler。FragHandler有Tablayout和viewpager。ALR和FragHandler代码写在下面。我想通过调用activatealert方法打开设置选项卡,这是FragHandler中的第三个选项卡,单击ALR即rl.setonclicklisterner 米夫拉甘德勒班 public class FragHandler extends AppCompatActivity TabLayout tabLayout; Too
public class FragHandler extends AppCompatActivity
TabLayout tabLayout;
Toolbar customtoolbar;
SharedPreferences sharedPreferences;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.alstabopener);
sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
tabLayout = (TabLayout) findViewById(R.id.tab_layout);
tabLayout.addTab(tabLayout.newTab().setText("1"));
tabLayout.addTab(tabLayout.newTab().setText("2"));
tabLayout.addTab(tabLayout.newTab().setText("Settings"));
tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
final ViewPager viewPager = (ViewPager) findViewById(R.id.pager);
final AlsViewChanger adapter = new AlsViewChanger(getSupportFragmentManager(), tabLayout.getTabCount());
viewPager.setAdapter(adapter);
viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
}
}
以及我的ALR.java,我正试图从中打开选项卡3
public class ALR extends Fragment {
TextView rl,
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) throws NullPointerException {
View view = inflater.inflate(R.layout.ar, container, false);
rl = (TextView) view.findViewById(R.id.reto);
rl.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
activatealert();
});
public void activatealert() {
MaterialDialog activateald = new MaterialDialog.Builder(getActivity())
.content("In order to use these services, please click settings and set appropriate options to activate Where R U feature.")
.title("Activate Where R U")
.positiveColor(Color.BLUE)
.negativeColor(Color.RED)
.positiveText("Settings")
.negativeText("Cancel")
.onPositive(new MaterialDialog.SingleButtonCallback() {
@Override
public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
Intent intent = new Intent(getActivity(),FragHandler.class);
intent.putExtra("Settings",2);
startActivity(intent);
}
})
.show();
}
}
它会打开选项卡式活动,但第一个选项卡不会根据需要打开第三个选项卡。请指导。根据您的代码编辑: 删除AbsSelectedListener上的
,您不需要它
加上
tabLayout.setupWithViewPager(viewPager);
以下是完整的代码:
public class FragHandler extends AppCompatActivity
TabLayout tabLayout;
Toolbar customtoolbar;
SharedPreferences sharedPreferences;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.alstabopener);
sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
tabLayout = (TabLayout) findViewById(R.id.tab_layout);
tabLayout.addTab(tabLayout.newTab().setText("1"));
tabLayout.addTab(tabLayout.newTab().setText("2"));
tabLayout.addTab(tabLayout.newTab().setText("Settings"));
tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
final ViewPager viewPager = (ViewPager) findViewById(R.id.pager);
final AlsViewChanger adapter = new AlsViewChanger(getSupportFragmentManager(), tabLayout.getTabCount());
viewPager.setAdapter(adapter);
tabLayout.setupWithViewPager(viewPager);
int tabToSelect = getIntent().getIntExtra("Settings”, 0);
viewPager.setCurrentItem(tabToSelect);
}
}
请检查一下电话号码
int tabToSelect = getIntent().getIntExtra("Settings”, 0);
我只是想如果你想这么做。如果您不需要,请根据需要进行更改
没有太多细节很难回答,但以下是我基于假设提出的几点建议:
1) 您想启动一个具有多个选项卡的活动FragHandler
。TabLayout与ViewPager
关联。所以在这种情况下,将适配器设置为ViewPager
后,调用ViewPager.setCurrentItem(2)
。如果只有选项卡,则可以尝试tabLayout.getTabAt(2).select()
。这将触发您的OnTabSelectedListener
,您可能已经有了替换片段的代码
2) 对话框中的片段位于同一个TabLayout
中,您需要的第三个选项卡位于该选项卡中。在这种情况下,请在单击设置按钮时输入以下代码:
// If ViewPager, then make it public in YourActivity
((YourActivity)getActivity()).viewPager.setCurrentItem(2);
// If TabLayout without ViewPager, then also make it public
((YourActivity)getActivity()).tabLayout.getTabAt(2).select();
并发布尽可能多的细节,以便您能得到正确答案I更新了更多信息的正文。请阅读并指导。因为在调用tab 3的ALR.java类中没有tablayout和viewpager,所以1或2个案例都没有帮助。@Panache如果我理解正确,案例1就是您需要的。您正在通过传递“设置”标志从ALR.java启动FragHandler活动。现在在创建FragHandler时,您可能正在初始化ViewPager和TableLayout。在该代码的下方,添加一行,如viewPager.setCurrentItem(2),尝试进行检查(&W);这将以编程方式使您的第三个选项卡处于选中状态。我已添加了类和更好的信息,请查看//如果没有ViewPager的TabLayout,请将其公开((YourActivity)getActivity()).TabLayout.getTabAt(2).select();成功了,谢谢