2016-03-18 3 views
0

Итак, у меня есть настраиваемый диалог, который открывается, когда пользователь нажимает на CardView. Когда диалог открывается, он позволяет пользователю выбрать один параметр, а затем открывает новое действие.Custom Dialog onClickListener

Проблема заключается в том, что я не могу установить onClickListener в диалоге, и когда я пытаюсь установить onClickListener в TableRow (Диалог из пользовательского макета, который имеет 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(); 

      } 

     }); 

Любое решение?

+0

R.id.dialogHomeScreenOpcenitoUrediSve в диалоговом макете не в макете деятельности, поэтому вы получаете нулевой указатель – Chol

ответ

3

NullPointerException выбрасывается, когда приложение пытается использовать ссылку на объект с нулевым значением.

Я предполагаю, что вы не хватает, чтобы установить dialog

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

Remeber, что 'TableRow' должен быть инициализировать после' show' методы должных на то, что вид до сих пор не завышены. –

+0

@Rod_Algonquin Да. Понял. –

+1

Спасибо! Можете ли вы взять минутку и посмотреть на мой другой вопрос? http://stackoverflow.com/questions/35929212/printing-sqlite-database-data-on-graph – DaxHR

2

Проблема:

findViewById(R.id.dialogHomeScreenOpcenitoUrediSve);

Вы ссылаетесь его в макете деятельности поэтому он даст вам NPE.

Вам нужно получить экземпляр диалогового окна и использовать его метод findViewById после метода диалога show.

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); 
         } 
        }); 
+0

Спасибо! Можете ли вы взять минутку и посмотреть на мой другой вопрос? http://stackoverflow.com/questions/35929212/printing-sqlite-database-data-on-graph – DaxHR