在onCreateDialog中使用onClickListener时,应用程序崩溃

时间:2016-05-16 17:13:12

标签: java android android-studio

我正在尝试在警告对话框中使用XML格式的按钮,但是当活动尝试加载时应用程序崩溃。

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方法。

2 个答案:

答案 0 :(得分:1)

你试图在对象v(视图)上调用findViewById(...),甚至在它被夸大之前。
我假设你得到一个导致崩溃的NullPointerException 请查看此链接 - http://www.mkyong.com/android/android-custom-dialog-example/ 以获取更多信息。

答案 1 :(得分:0)

在实例化View v .....

之前,您试图找到按钮ID

首先实例化你的inflater和View对象,然后是你的按钮。

SELECT REPLACE(Address, ',', '') AS Address, * FROM MailingList