Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 根据int值更改片段_Java_Android_Android Fragments - Fatal编程技术网

Java 根据int值更改片段

Java 根据int值更改片段,java,android,android-fragments,Java,Android,Android Fragments,大家好,我的代码有问题,我想做的是,当你改变微调器的位置,改变要显示的片段,这是我写的,但它不起作用,如果有人能给我一个更好的方法来做它或解决方案,这将是伟大的 这是我的班级: public class MainActivity extends ActionBarActivity { private static final int NUM_PAGES = 2; private ViewPager mPager; private PagerAdapter mPagerAdapter; Str

大家好,我的代码有问题,我想做的是,当你改变微调器的位置,改变要显示的片段,这是我写的,但它不起作用,如果有人能给我一个更好的方法来做它或解决方案,这将是伟大的

这是我的班级:

public class MainActivity extends ActionBarActivity {

private static final int NUM_PAGES = 2;

private ViewPager mPager;
private PagerAdapter mPagerAdapter;
String[] ciudades = { "Desde Paraná", "Desde Santa Fe", "Desde el pozo", "Desde abogacia"};
public int ciudad = 0;

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

    mPager = (ViewPager) findViewById(R.id.pager);

    Spinner sp = (Spinner) findViewById(R.id.spinner1);
    ArrayAdapter adapter = ArrayAdapter.createFromResource( this, R.array.opciones, android.R.layout.simple_spinner_item);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    sp.setAdapter(adapter);

    sp.setOnItemSelectedListener(new OnItemSelectedListener() {

        public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {

                ciudad = position;
                Toast.makeText(parentView.getContext(), ciudades[position], Toast.LENGTH_SHORT).show();         
        }

        public void onNothingSelected(AdapterView<?> parentView) {

        }
    });

    mPagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager());
    mPager.setAdapter(mPagerAdapter);

}

@Override
public void onBackPressed() {
    if (mPager.getCurrentItem() == 0) {
        super.onBackPressed();
    } else {
        // Otherwise, select the previous step.
        mPager.setCurrentItem(mPager.getCurrentItem() - 1);
    }
}


private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {
    public ScreenSlidePagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {

    /* Here is what I do, I took the value of ciudad and use it to display different group of fragment */
        if(ciudad == 0){
            switch(position){
                case 0:
                    return new Home_fragment();
                case 1:
                    return new Next_fragment();                 
            }
        }else if(ciudad == 1){
            switch(position){
                case 0:
                    return new Home_fragment_staFe();
                case 1:
                    return new Next_fragment_staFe();                   
            }
        }

        return null;
    }

    @Override
    public int getCount() {
        return NUM_PAGES;
    }
}
}
提前谢谢

编辑

我试过KCopock告诉我的方法

notifyDataSetChanged

我以前也是这样,但还是不起作用

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

    mPager = (ViewPager) findViewById(R.id.pager);
    mPagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager());



    Spinner sp = (Spinner) findViewById(R.id.spinner1);
    ArrayAdapter adapter = ArrayAdapter.createFromResource( this, R.array.opciones, android.R.layout.simple_spinner_item);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    sp.setAdapter(adapter);

    sp.setOnItemSelectedListener(new OnItemSelectedListener() {

        public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {

                ciudad = position;
                Toast.makeText(parentView.getContext(), ciudades[position], Toast.LENGTH_SHORT).show();
                mPagerAdapter.notifyDataSetChanged();
        }

        public void onNothingSelected(AdapterView<?> parentView) {

        }
    });

    // Instantiate a ViewPager and a PagerAdapter.
    mPager.setAdapter(mPagerAdapter);

}

它永远不会再调用getItem,因为它不知道ciudad的值已更改。在spinner value changed方法中,当您更改ciudad的值时,调用mPagerAdapter.notifyDataSetChanged以通知适配器它应该重新创建片段


此外,Home_片段是Java非常非传统的命名模式。它应该是HomeFragment。

但它不起作用,请不要用它来描述问题。什么不起作用?当我更改ciudad值时,不会从Home\u fragment更改为Home\u fragment\u staFe