[Android] android.app.Activity.findViewById(int) on a null object reference

来源:互联网 发布:亦何为而非天下之公乎 编辑:程序博客网 时间:2024/05/16 01:59

问题:

我经常在Android项目中遇到这样一个问题

java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.app.Activity.findViewById(int)' on a null object reference

在我的 MainActivity 中我给这个类命名为 FragmentStart

FragmentStart.class

public class FragmentStart extends Fragment {    private ListView startList;    private String[] stringList;    Activity activity = getActivity();    public FragmentStart() {    }    @Override    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {        View rootView = inflater.inflate(R.layout.fragment_start, container, false);        startList = (ListView) rootView.findViewById(R.id.startList);        stringList = getResources().getStringArray(R.array.startList);        if (activity != null) {            ArrayAdapter<String> objAdapter = new ArrayAdapter<String>(activity, android.R.layout.simple_list_item_1, stringList);            startList.setAdapter(objAdapter);            startList.setOnItemClickListener(new AdapterView.OnItemClickListener() {                @Override                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {                    switch (startList.getPositionForView(view)) {                        case 0:                            // ...                            break;                    }                }            });        }        Button add = (Button) activity.findViewById(R.id.add);        add.setOnClickListener(new View.OnClickListener() {            public void onClick(View view) {                Intent myIntent = new Intent(view.getContext(), addItem.class);                startActivityForResult(myIntent, 0);            }        });        return rootView;    }}

解决方法

看上去应该是:

Button add = (Button) activity.findViewById(R.id.add);

…应该被改成这样:

Button add = (Button) rootView.findViewById(R.id.add);


原问题

0 0
原创粉丝点击