Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.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 在微调器NullPointerException中添加赋值_Java_Android_Android Fragments_Nullpointerexception_Android Spinner - Fatal编程技术网

Java 在微调器NullPointerException中添加赋值

Java 在微调器NullPointerException中添加赋值,java,android,android-fragments,nullpointerexception,android-spinner,Java,Android,Android Fragments,Nullpointerexception,Android Spinner,就像我之前的帖子: 但现在,我试图在FragA的微调器中赋值,并将其添加到FragB的int中。与前一篇文章一样,金额将在FragC上。这是我的密码: FragA public class FragA extends Fragment{ Spinner spinner1; String s1; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container,

就像我之前的帖子:

但现在,我试图在FragA的微调器中赋值,并将其添加到FragB的int中。与前一篇文章一样,金额将在FragC上。这是我的密码:

FragA

public class FragA extends Fragment{ 

    Spinner spinner1;
    String s1; 

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

        spinner1 = (Spinner) getActivity().findViewById(R.id.spinner1);     
        spinner1.setOnItemSelectedListener(new OnItemSelectedListener() {

            @Override
            public void onItemSelected(AdapterView<?> arg0, View arg1,
                    int arg2, long arg3) {

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

            @Override
            public void onNothingSelected(AdapterView<?> arg0) {

            }
        });     
        return inflater.inflate(R.layout.fraga, container, false);    
    }

    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);

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

    public int getInt(String s1) {

        int a = 0;

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

        return a;    
    }

}
main活动

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();
                }
                if (i == 2)
                {
                    fragment = new FragC(); 
                }
                return fragment;
            }

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

    public String sum() {

        FragA FragA = new FragA();
        FragB FragB = new FragB();
        return Integer.valueOf(FragA.getInt() + FragB.getInt());
    }

}
FragC

public class FragC extends Fragment{

    Button button;
    TextView textView;

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

        View v = inflater.inflate(R.layout.fragc, container, false); 

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

        return v;
    }

    OnClickListener Click = new OnClickListener() { 

        @Override
        public void onClick(View v) {

            textView.setText(((MainActivity)getActivity()).sum());

        }
    };

}
MainActivity getInt()出错,表示“FragA类型中的方法getInt()不适用于参数()”

->
spinner1=(Spinner)getActivity()。findViewById(R.id.spinner1)

换成

Spinner spinner1 = (Spinner) getView().findViewById(R.id.spinner1);

将该行放在onCreateView中

spinner1 = (Spinner) getActivity().findViewById(R.id.spinner1); 

As
onActivityCreated
方法总是在
onCreateView
之前调用,并且当您尝试初始化
微调器时,它无法获取视图

onCreateView

编辑:

通过为
微调器实现
setonItemClickListener
,尝试获取所选项目,如下所示:

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

        spinner1 = (Spinner) getActivity().findViewById(R.id.spinner1);

        spinner1 .setOnItemSelectedListener(new OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1,
                int arg2, long arg3) {
             s1 = spinner1.getSelectedItem().toString();
                             getInt(s1);
        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
            // TODO Auto-generated method stub

        }
    });
        return inflater.inflate(R.layout.fraga, container, false); 

    }
试试这个

onCreateView

       @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);
            return view;
        }
@覆盖
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图=充气机。充气(R.layout.fraga,容器,假);
spinner1=(Spinner)view.findViewById(R.id.spinner1);
ArrayAdapter_a=ArrayAdapter.createFromResource(getActivity(),R.array.spinner1,android.R.layout.simple_微调器_项);
喷丝头1.固定接头(接头a);
返回视图;
}
示例:

public class FragA extends Fragment{

        Spinner spinner1;

        @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);
            return view;
        }

        public int getInt() {

            int a = 0;

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

            if(s1.equals("Hello")) {
                a = 5;
            }
            else if(s1.equals("Hi")) {
                a = 10; 
            }   
            return a;       
        }

        public void onActivityCreated(Bundle savedInstanceState) {
            super.onActivityCreated(savedInstanceState);

        }

    }
公共类FragA扩展片段{
喷丝器喷丝器1;
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图=充气机。充气(R.layout.fraga,容器,假);
spinner1=(Spinner)view.findViewById(R.id.spinner1);
ArrayAdapter_a=ArrayAdapter.createFromResource(getActivity(),R.array.spinner1,android.R.layout.simple_微调器_项);
喷丝头1.固定接头(接头a);
返回视图;
}
公共int getInt(){
int a=0;
字符串s1=喷丝头1.getSelectedItem().toString();
如果(s1等于(“你好”)){
a=5;
}
else如果(s1等于(“Hi”)){
a=10;
}   
返回a;
}
已创建ActivityState上的公共无效(Bundle savedInstanceState){
super.onActivityCreated(savedInstanceState);
}
}

FragA.java中第18行有什么?@Tamanna-String s1=spinner1.getSelectedItem().toString();spinner1为null或spinner1.getSelectedItem()为null您无法通过实例化该类来访问视图(Spinner)。我的意思是
FragA-FragA=new-FragA()不包含微调器实例。只有当前面的片段返回null时,才能访问视图exception@SathishKumar-那我该怎么办?我仍然在“String s1=spinner1.getSelectedItem().toString();”处得到NullPointerException…@user2942600也在
onCreateView
中执行setadapter,就像我的编辑一样。@user2942600我检查了它,它正在工作。正确地在创建的活动中输入条目设置entiers已经晚了。在设置条目之前,我们将调用spinner1.getSelectedItem().toString()
,以使空指针。是。“字符串s1=spinner1.getSelectedItem().toString();”的NullPointerException“@user2942600是
fraga
布局中的
spinner1
。仍在“字符串s1=spinner1.getSelectedItem().toString();“我在MainActivity上出错”返回整数。toString(fraga.getInt()+FragB.getInt());”上显示“FragA类型中的方法getInt()不适用于参数()”@user2942600像这样尝试
“返回Integer.valueOf(FragA.getInt()+FragB.getInt());“
如果要返回
字符串
,请将返回类型更改为
字符串
类似
返回字符串.valueOf(FragA.getInt()+FragB.getInt());
或者如果只想返回
Integer
,则需要将
sum
方法的返回类型更改为
String
例如
public int sum(){……
当我将其更改为“return Integer.valueOf(FragA.getInt()+FragB.getInt());”或“return String.valueOf(FragA.getInt()+FragB.getInt())”;getInt()处出现错误,表示“FragA类型中的方法getInt()不适用于参数()
       @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);
            return view;
        }
public class FragA extends Fragment{

        Spinner spinner1;

        @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);
            return view;
        }

        public int getInt() {

            int a = 0;

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

            if(s1.equals("Hello")) {
                a = 5;
            }
            else if(s1.equals("Hi")) {
                a = 10; 
            }   
            return a;       
        }

        public void onActivityCreated(Bundle savedInstanceState) {
            super.onActivityCreated(savedInstanceState);

        }

    }