2015年09月27日
【Android】findViewByIdをonCreateの外で書いたときのNull Pointer Exception【エラー】
findViewByIdをonCreateの外で書かくとNull Pointer Exceptionとなってしまいます。以下のようなプログラムを書いてみます。
MainActivity.java
public class MainActivity extends Activity {
EditText editText = (EditText)findViewById(R.id.editText);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
・・・
activity_main.xml
上記のプログラムはNull Pointer Exceptionとなります。
EditText editText = (EditText)findViewById(R.id.editText);
を上記の位置に書いてしまうとEditTextが記述されたactvity_main.xmlがsetContextView()されるまえに呼び出されることになります。
そのためfindViewByIdで指定されたidを見つけることができずNull Pointer Exceptionとなってしまいます。
すなわちfindViewByIdはsetContextView()よりあとに記述しなければなりません。
MainActivity.java
public class MainActivity extends Activity {
EditText editText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = (EditText)findViewById(R.id.editText);
}
・・・
これで正しく動作します。
MainActivity.java
public class MainActivity extends Activity {
EditText editText = (EditText)findViewById(R.id.editText);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
・・・
activity_main.xml
上記のプログラムはNull Pointer Exceptionとなります。
EditText editText = (EditText)findViewById(R.id.editText);
を上記の位置に書いてしまうとEditTextが記述されたactvity_main.xmlがsetContextView()されるまえに呼び出されることになります。
そのためfindViewByIdで指定されたidを見つけることができずNull Pointer Exceptionとなってしまいます。
すなわちfindViewByIdはsetContextView()よりあとに記述しなければなりません。
MainActivity.java
public class MainActivity extends Activity {
EditText editText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = (EditText)findViewById(R.id.editText);
}
・・・
これで正しく動作します。
【このカテゴリーの最新記事】
-
no image
-
no image
-
no image
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
https://fanblogs.jp/tb/4225065
※ブログオーナーが承認したトラックバックのみ表示されます。
この記事へのトラックバック