簡體   English   中英

自定義對話框onClickListener

[英]Custom Dialog onClickListener

因此,我有一個自定義對話框,當用戶單擊CardView時會打開。 打開對話框后,用戶可以選擇一個選項,然后打開一個新活動。

問題是,我無法將onClickListener設置為Dialog,並且當我嘗試將onClickListener設置為TableRow(Dialog來自具有TableRows的自定義布局)時,我在對話框上獲得了NullPointerException dialogHomeScreenOpcenitoUrediSve.setOnClickListener(new View.OnClickListener() {

這是我的代碼:

karticaMainScreenOpcenitoGrid.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                final Dialog dialog = new Dialog(AppLayoutMain.this);
                dialog.setContentView(R.layout.content_home_screen_opcenito_dialog);
                dialog.setTitle(getResources().getString(R.string.dialog_tumacenje_programa_naslov));
                dialogHomeScreenOpcenitoUrediSve = (TableRow) findViewById(R.id.dialogHomeScreenOpcenitoUrediSve);
                dialogHomeScreenOpcenitoUrediSve.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Intent i = new Intent(AppLayoutMain.this, StatistikeInputMain.class);
                        startActivity(i);
                    }
                });

                dialog.show();

            }

        });

有什么辦法嗎?

當應用程序嘗試使用具有空值的對象引用時,將引發NullPointerException。

我認為您缺少設置dialog

 dialogHomeScreenOpcenitoUrediSve = (TableRow)dialog. findViewById(R.id.dialogHomeScreenOpcenitoUrediSve);

問題:

findViewById(R.id.dialogHomeScreenOpcenitoUrediSve);

您在活動布局中引用它,因此它將為您提供NPE。

您需要獲取對話框實例,並在對話框的show方法之后使用其findViewById方法。

final Dialog dialog = new Dialog(AppLayoutMain.this);
                dialog.setContentView(R.layout.content_home_screen_opcenito_dialog);
                dialog.setTitle(getResources().getString(R.string.dialog_tumacenje_programa_naslov));
                dialog.show();

dialogHomeScreenOpcenitoUrediSve = (TableRow) dialog.findViewById(R.id.dialogHomeScreenOpcenitoUrediSve);
                    dialogHomeScreenOpcenitoUrediSve.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            Intent i = new Intent(AppLayoutMain.this, StatistikeInputMain.class);
                            startActivity(i);
                        }
                    });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM