您的位置:首页 > 移动开发 > Objective-C

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

2016-06-06 21:16 996 查看

问题:

我经常在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);


原问题
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 对象 class