2013-08-18 7 views
1

Я установил кнопку, и я пытаюсь отобразить тост, когда пользователь нажимает на него. Вот мой код Java -Onclick listener throwing NullPointerException

file = (Button) findViewById(R.id.file); 

file.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       // Display the file chooser dialog 
       //showChooser(); 
       Toast.makeText(getApplicationContext(), "this is my Toast message!!! =)", Toast.LENGTH_LONG).show(); 
      } 
     }); 

Вот мой XML-код для установки кнопки -

<Button 
      android:id="@+id/file" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_below="@id/plt" 
      android:text="File" /> 

Это бросает NullPointerException на линии file.setOnClickListener(new OnClickListener() {. Что я делаю не так?

ответ

0

Если есть исключения нулевого указателя на этой линии:

file.setOnClickListener(new OnClickListener() 

тогда это означает, что ваш file объект является нулевым

Убедитесь, что вы инициализировать объект файла перед добавлением слушателя к нему.

3

Вы инициализируете кнопку внутри метода onCreate() своей деятельности?

Если это так, пожалуйста, проверьте, если вы звоните

setContentView(R.id.yourlayoutfile); 

перед инициализацией кнопку с findViewById(R.id.file);

Ваша ошибка происходит потому, что ваш Кнопка «Файл» является null, что означает, что findViewById(...) не найдите любой вид с этим id. Причина, следовательно, может быть либо, что нет такого ID в надутом макете, или что вы не называли setContentView(...)

@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.yourlayoutfile); 

     // initialize your button here 
    } 
1

попытаться очистить проекту

проект -> чистый -> выбрать ваш проект -> ok, , затем снова запустите.

, если вы по-прежнему сталкиваются с той же проблемой вы можете использовать другой путь для установки нажмите действия

в вашем XML

<Button 
     android:id="@+id/file" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/plt" 

     <!--added line-->    
     android:onClick="anyName" 

     android:text="File" /> 

, а затем в вас деятельность удалить инициализацию кнопки и нажмите у слушателя слишком

и сделать код выглядит, что

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.id.yourlayoutfile); 
} 

public void anyName(View v){ 
Toast.makeText(getApplicationContext(), "this is my Toast message!!! =)", 
    Toast.LENGTH_LONG).show(); 

}

Надеюсь, что эта помощь.

+0

Я добавлю, что причина «чистого проекта» - это потенциальное исправление, потому что иногда (используя Eclipse) 'R.java' не синхронизируется с написанными вами XML-макетами, а чистая сборка будет регенерировать 'R.java' с нуля – ataulm

+0

Определенно, это очень распространенная проблема при работе с eclipse. – scriptocalypse