2017-09-03 4 views
0

私はALr.javaクラスとFragHandlerを持っています。 FragHandlerはTablayoutとviewpagerを持っています。 ALRとFragHandlerコードは以下のように記述されています。私はFragHandlerの3番目のタブである[設定]タブを開くには、activatealertメソッドを呼び出すことによってALRすなわちrl.setonclicklisternerをクリックします。私はタブ3.Android - 第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(); 
    } 
} 

を開こうとするとmはどこから

MyFragHandlerクラス

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必要に応じて、それはタブ付きactivitiyが、最初のタブ第三ないが開きます。 Plsガイド。あなたのコードに基づいて

答えて

1

編集:

OnTabSelectedListenerを削除し、あなたがそれを必要としません。

ちょうどここで完全なコードです

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); 

を確認してください。あなたがそれを必要としない場合はそれに従って変更してください。

それは多くの詳細がなくて答えるのは難しいですが、ここでは私のいくつかの提案は、仮定に基づいている:あなたは複数のタブを持って活動FragHandlerを開始したい

1)。 TabLayoutはViewPagerに関連付けられています。その場合は、アダプタをViewPagerに設定した後、viewPager.setCurrentItem(2)に電話してください。タブしかない場合は、tabLayout.getTabAt(2).select()を試すことができます。これにより、すでにフラグメントを置き換えるコードがある可能性があるOnTabSelectedListenerがトリガーされます。

2)対話している断片は、同じ第TabLayoutの中にあります。この場合、設定ボタンのonClickの中に次のコードを置く:

// 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(); 

をそして、あなたは、私はより多くの情報と体を更新し、正しい答え

+0

を得ることができるように、できるだけ多くの詳細を投稿してください。 plsは読んでガイドします。私はタブ3を呼び出す場所からALR.javaクラスのtablayoutとviewpagerを持っていないので、1または2の場合は役に立ちません。 – Panache

+0

@Panache正しい場合、ケース1が必要です。 ALR.javaからFragHandlerアクティビティを開始し、 "Settings"フラグを渡しています。今度はFragHandlerのonCreateでViewPagerとTabLayoutを初期化するかもしれません。そのコードのすぐ下に、 のような行を追加してチェックしてみてください。viewPager.setCurrentItem(2);これはプログラムによって第3のタブが選択されるようにします。 –

+0

私はクラスとより良い情報の両方を追加しました。 – Panache

関連する問題