Java Android-在片段中从对话框触发的意图中打开第三个选项卡

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

我有ALr.java类和FragHandler。FragHandler有Tablayout和viewpager。ALR和FragHandler代码写在下面。我想通过调用activatealert方法打开设置选项卡,这是FragHandler中的第三个选项卡,单击ALR即rl.setonclicklisterner

米夫拉甘德勒班

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();成功了,谢谢