简体   繁体   中英

Move from 1 Activity to specific fragment on button click.

i have an activity where i have 2 buttons and when i click on 1st button it will open first fragment and when i click on 2nd button it will open second fragment.

public class PagerAdapter extends FragmentPagerAdapter {


public PagerAdapter(FragmentManager fm) {
    super(fm);
}

@Override
public Fragment getItem(int position) {

    switch(position)
    {
        case 0 :
            return new Three();

        case 1 :
            return new Two() ;

        case 2 :
            return new One();

        default :
            break ;
     }
     return null ;

}

@Override
public int getCount() {
    return 3 ;
}

}

this is fragment page

public class MainActivity extends FragmentActivity {

ViewPager viewpager ;
ImageView a ;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    viewpager = findViewById(R.id.pager);
    PagerAdapter padapter  = new PagerAdapter(getSupportFragmentManager());
    viewpager.setAdapter(padapter);
    viewpager.setOffscreenPageLimit(3);

}

} this is main activity on which fragments are placed

public class Index extends Activity {


ImageView index ;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_index);


    index = (ImageView) findViewById(R.id.index1);

    index.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent i = new Intent(Index.this , MainActivity.class);
            startActivity(i);


        }
    });
}

}

this is index page where i have button when i click on it, opens case 0 fragment automatically i want to open specific fragment on click

If you want to open particular index fragment then please pass the key from Index Activity like this

Intent i = new Intent(Index.this , MainActivity.class);
i.putExtra("index","position");  //Position means 0,1,2
startActivity(i);

And In mainActivity Activity you can get the value which is pass from Index Activity and infliate that Fragment with

viewpager.setCurrentItem(index);

Like this public class MainActivity extends FragmentActivity {

ViewPager viewpager ;
ImageView a ;
int index=0;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if(getIntent().hasExtra("index")) {
     index = Integer.parseInt(getIntent().getExtras().getString("index"));
}
viewpager = findViewById(R.id.pager);
PagerAdapter padapter  = new PagerAdapter(getSupportFragmentManager());
viewpager.setAdapter(padapter);
viewpager.setCurrentItem(index);

}

You have to pass fragment index from index activity to main. 1) Put index into intent:

Intent i = new Intent(Index.this , MainActivity.class);
i.putExtra("fragment_index_key", 1);
startActivity(i);

2) Obtain index at main activity and change pager's page

....
PagerAdapter padapter  = new PagerAdapter(getSupportFragmentManager());
viewpager.setAdapter(padapter);
viewpager.setOffscreenPageLimit(3);
int index = getIntent().getIntExtra("fragment_index_key", 0); // 0 is default value
viewpager.setCurrentItem(index);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM