一个自己的ImageButton对话框

时间:2017-01-12 23:16:28

标签: android android-alertdialog

启动应用程序后启动Dialog! (自己的对话)但是当我向对话框添加一个ImageButton时,应用程序确实崩溃但我想使用我自己的对话框xml文件和我自己设计的图像按钮

这是我的代码:

public class MenueActivity extends AppCompatActivity {

    SharedPreferences mPrefs;
    ImageButton btnverstanden;



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_menue);

        btnverstanden = (ImageButton)findViewById(R.id.verstanden);

        Context mContext = this.getApplicationContext();
        mPrefs = mContext.getSharedPreferences("myAppPrefs", 0);

        if(getFirstRun()) {

            final Dialog dialog = new Dialog(this,android.R.style.Theme_Translucent_NoTitleBar_Fullscreen);
            dialog.setContentView(R.layout.activity_dialog_tutorial);

            btnverstanden.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    dialog.dismiss();
                }
            });

            setRan();
            dialog.show();
        }
    }

    public boolean getFirstRun() {
        return mPrefs.getBoolean("firstRun", true);
    }

    public void setRan() {
        SharedPreferences.Editor edit = mPrefs.edit();
        edit.putBoolean("firstRun", false);
        edit.apply();
    }

}
当某人帮助我时,我不明白这一点,我是初学者

2 个答案:

答案 0 :(得分:0)

你说你得到NullPointException:ImageButton.setOnClickListener,这意味着btnverstanden为空。

ImageButton btnverstanden位于您的对话框布局中,但是您在mian布局R.layout.activity_menue中初始化,所以我想这就是您获得异常的原因。

也许你应该这样写:

final Dialog dialog = new Dialog(this,android.R.style.Theme_Translucent_NoTitleBar_Fullscreen);
dialog.setContentView(R.layout.activity_dialog_tutorial);
View view = getLayoutInflate().inflate(R.layout.activity_dialog_tutorial,null);
btnverstanden = (ImageButton)view.findViewById(R.id.verstanden);

答案 1 :(得分:0)

如果您的ImageButton btnverstanden;位于R.layout.activity_menue,则无法将此ImageButton添加到Dialog,如果此按钮已开启R.layout.activity_dialog_tutorial,请在对话框中初始化此内容。

删除它:

btnverstanden = (ImageButton)findViewById(R.id.verstanden);

有了这个:

        final Dialog dialog = new Dialog(this,android.R.style.Theme_Translucent_NoTitleBar_Fullscreen);
        dialog.setContentView(R.layout.activity_dialog_tutorial);
        ImageButton btnverstanden = (ImageButton) dialog.findViewById(R.id.verstanden);  //<---init here

        btnverstanden.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dialog.dismiss();
            }
        });