[android] NullPointerException: Attempt to invoke virtual method ‘void android.widget.Button.setOnClickListenerエラーの対処方法
目次
NullPointerException: Attempt to invoke virtual method ‘void android.widget.Button.setOnClickListenerエラーの対処方法
Avtivity上にButtonを配置して、onClickListnerを設定したらNullPointerエラーが出た。
調べてみたら、Viewが配置されるonCreateViewでButtonの配置とonClickListnerを設定が必要だった。
エラー発生時はonCreateで作成していた。
解決前:
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Button button = (Button)this.findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(getActivity(), "hoge!", Toast.LENGTH_SHORT).show(); } }); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_main, null, false); }
解決後
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { final View view = inflater.inflate(R.layout.fragment_main, null, false); Button button = (Button)view.findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(getActivity(), "hoge!", Toast.LENGTH_SHORT).show(); } }); return view; }