Viewpager的NullPointerException内传递微调从片段片段分配值[解决] [英] Passing Assigned Value of a Spinner from Fragment to Fragment within Viewpager NullPointerException [Solved]

查看:145
本文介绍了Viewpager的NullPointerException内传递微调从片段片段分配值[解决]的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

好吧,我让它更简单,根据我的previous后的答案更新它:<一href=\"http://stackoverflow.com/questions/20649497/adding-assigned-values-in-spinner-nullpointerexception\">Adding在微调的NullPointerException 赋值

Ok, I've make it more simple and updated it based on the answers in my previous post: Adding Assigned Values in Spinner NullPointerException

我有一个 MainAcitivty ,它使用的 ViewPager 。我有2个片段在我MainActivity(弗拉加和FragB)

I have a MainAcitivty that uses a ViewPager. I have 2 Fragments in my MainActivity (FragA and FragB)

在我的弗拉加我有一个微调。而在 FragB ,我有一个的TextView 按钮即可。

In my FragA I have a spinner. While in FragB, I have a TextView and a Button.

现在我是什么要做的是,当我在飞旋选择你好,我的int类型的将有5的值,当我按一下按钮,5将在TextView中显示。

Now what am I trying to do is, when I select "Hello" in my spinner, my int a will have a value of 5. And when I click the Button, 5 will display in the TextView.

下面是我的code:

弗拉加

public class FragA extends Fragment {

    Spinner spinner1;
    String s1;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.fraga, container, false); 

        spinner1 = (Spinner) view.findViewById(R.id.spinner1);  
        ArrayAdapter<CharSequence>  adapter_a = ArrayAdapter.createFromResource(getActivity(), R.array.spinner1,android.R.layout.simple_spinner_item );
        spinner1.setAdapter(adapter_a);

        s1 = spinner1.getSelectedItem().toString();

        return view;
    }

    public int getInt() {

        int a = 0;

        if(s1.equals("Hello")) {
            a = 5;
        }

        return a;    
    }

}

MainActivity

public class MainActivity extends FragmentActivity {

    ViewPager viewPager = null; 

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

        viewPager = (ViewPager)findViewById(R.id.pager);    
        FragmentManager fragmentManager = getSupportFragmentManager();
        viewPager.setAdapter(new MyAdapter(fragmentManager));
    }

    public class MyAdapter extends FragmentStatePagerAdapter {  

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

            @Override
            public Fragment getItem(int i) {
                Fragment fragment = null;

                if (i == 0)
                {
                    fragment = new FragA();
                }
                if (i == 1)
                {
                    fragment = new FragB();
                }
                return fragment;
            }

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

    public String get() {

        FragA FragA = new FragA();

        return Integer.toString(FragA.getInt());
    }
}

FragB

public class FragB extends Fragment{

    TextView textView;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.fragb, container, false); 

        textView = (TextView) view.findViewById(R.id.textview);
        Button button = (Button) view.findViewById(R.id.button);
        button.setOnClickListener(Click);

        return view;
    }

    OnClickListener Click = new OnClickListener() { 

        @Override
        public void onClick(View v) {

            textView.setText(((MainActivity)getActivity()).get());          
        }
    };

}

顺便说一句,我有过的从弗拉加到FragB的值没有问题的时候,这是我的code:

By the way, I have no problem passing the value of a from FragA to FragB when this is my code:

public int getInt() {

        int a = 5;

        return a;    
    }

但是,这并不涉及我的微调而不是我想做的事情。希望有人可以给我一个解决我的问题。一直停留在此的某个时候。先谢谢了。

But, it doesn't involve my spinner and that's not I want to do. Hope someone can give me a solution to my problem. Been stuck on this for sometime. Thanks in advance.

推荐答案

下面是一个简单的方法片段之间的通信。

Here is a simple way to communicate between fragments.

在MainActivity,保持片段的静态实例。

In MainActivity, keep static instances of the fragments.

public static FragA fragmentA;
public static FragB fragmentB;

现在,如果你想从弗拉加访问FragB,写类似的东西:

Now if you want to access FragB from FragA, write something similar:

((MainActivity) getActivity()).fragmentB.setSomething();

和这是一个更好/有道片段之间进行通信:

And Here is a better/proper way to communicate between fragments:

http://developer.android.com/training/basics/fragments/ communicating.html

这篇关于Viewpager的NullPointerException内传递微调从片段片段分配值[解决]的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆