2016-05-16 3 views
-1

Я пытаюсь использовать кнопку, созданную в XML в диалоговом окне предупреждения, но приложение вылетает, когда действие пытается загрузить.Приложение сбой при использовании onClickListener в onCreateDialog

package dtt.bob.rsrpechhulp; 

import android.app.AlertDialog; 
import android.app.Dialog; 
import android.app.DialogFragment; 
import android.os.Bundle; 
import android.support.annotation.NonNull; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.widget.Button; 

public class CallWindow extends DialogFragment implements View.OnClickListener{ 
LayoutInflater inflater; 
View v; 

@Override 
@NonNull 
public Dialog onCreateDialog(Bundle savedInstanceState) { 
    Button annuleren = (Button) v.findViewById(R.id.annuleren); //here is the problem I assume 
    annuleren.setOnClickListener(this); 

    inflater = getActivity().getLayoutInflater(); 
    v = inflater.inflate(R.layout.call, null); 
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
    builder.setView(v); 
    return builder.create(); 
} 

public void onClick(View v) { 
    switch(v.getId()){ 
     case R.id.annuleren: 
      annulerenClick(); 
      break; 
    } 
} 

//annuleren 
private void annulerenClick(){ 
    dismiss(); 
} 

Любые идеи о том, как исправить это? Я использовал onClickListeners в других действиях, но они были в методах onCreate вместо методов onCreateDialog.

+0

Почему вы не отлаживаете/не вставляете здесь ошибку, которую вы получаете? Есть бесконечные причины для приложения, чтобы сбой .... –

+0

Возможный дубликат [Что такое Исключение Null Указатель и как его исправить?] (http://stackoverflow.com/questions/218384/what-is-a-null-pointer-exception-and-how-do-i-fix-it) –

+0

Проверьте это: http://stackoverflow.com/questions/ 25803727/android-setonclicklistener-method-how-does-it-work –

ответ

0

Вы пытались найти кнопку идентификатор до того экземпляра View V .....

Первый экземпляр вашего Inflater и вид объекта, а затем вашу кнопку.

public Dialog onCreateDialog(Bundle savedInstanceState) { 
     inflater = getActivity().getLayoutInflater(); 
     v = inflater.inflate(R.layout.call, null); 
     Button annuleren = (Button) v.findViewById(R.id.annuleren); //here is the problem I assume 
     annuleren.setOnClickListener(this); 


     AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
     builder.setView(v); 
     return builder.create(); 
    } 
+0

Спасибо, он сработал! –

1

Вы пытаетесь вызвать findViewById (...) на объект v (Вид) еще до того, как он завышен.
Я предполагаю, что вы получите исключение NullPointerException, которое вызывает сбой.
Посмотрите на эту ссылку - http://www.mkyong.com/android/android-custom-dialog-example/ для получения дополнительной информации.

+0

Yup, это не было умным от меня, спасибо за помощь –

Смежные вопросы