1

我試圖讓AlertDialog從自定義視圖中膨脹。我想我知道問題是什麼,但我不知道如何解決它。我在LongClick上有一個(View V),Button1使用「alertdialog」來查找數據。我得到一個空指針異常 TextView stax1 =(TextView)findViewById(R.id.xxx); 唯一有意義的是我有Dialog尋找「alerthelp」,當它應該看它的活動來源。我該如何解決?使用LayoutInflater和AlertDialog

 lay1.setOnLongClickListener(new OnLongClickListener() { 
     public boolean onLongClick(View v)   
     {      

      LayoutInflater myLayout = LayoutInflater.from(context); 
      View dialogView = myLayout.inflate(R.layout.alerthelp, null); 
      AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
      context); 
      AlertDialog alertDialog = alertDialogBuilder.create(); 
      alertDialogBuilder.setView(dialogView); 
      alertDialog.show(); 


      Button button1 = (Button)dialogView.findViewById(R.id.button1); 
      button1.setOnClickListener(new OnClickListener(){ 
      public void onClick(View v) { 
       TextView stax1=(TextView)findViewById(R.id.xxx); 
       String sax1 = stax1.getText().toString(); 
       double sx1 = Double.parseDouble(sax1); 

       TextView textviewlay1 =(TextView)findViewById(R.id.m1ab); 
       String stringl1 = textviewlay1.getText().toString(); 
       Double doubl1 = Double.parseDouble(stringl1); 

       TextView textviewp1 = (TextView)findViewById(R.id.inputPrice); 
       String stringp1 = textviewp1.getText().toString(); 
       Double intp1 = Double.parseDouble(stringp1); 

       double resultl1 = intp1 - (doubl1*sx1); 
       int precision21t = 100; //keep 4 digits 
       resultl1= Math.floor(resultl1 * precision21t +.5)/precision21t; 
       textViewtotalproduct.setText(String.valueOf(resultl1));  

      } 
     }); 


      Button button2 = (Button) dialogView.findViewById(R.id.button2); 
      button2.setOnClickListener(new OnClickListener(){ 

      public void onClick(View v) { 
       TextView textviewlay1 =(TextView)findViewById(R.id.m1ab); 
       String stringl1 = textviewlay1.getText().toString(); 
       Double doubl1 = Double.parseDouble(stringl1);  

       TextView textviewp1 = (TextView)findViewById(R.id.inputPrice); 
       String stringp1 = textviewp1.getText().toString(); 
       Double intp1 = Double.parseDouble(stringp1); 

       double resultl1 = intp1 - doubl1; 
       int precision21t = 100; //keep 4 digits 
       resultl1= Math.floor(resultl1 * precision21t +.5)/precision21t; 
       textViewtotalproduct.setText(String.valueOf(resultl1)); 
       } 
       }); 

      Button button3 = (Button)dialogView.findViewById(R.id.button3); 
      button3.setOnClickListener(new OnClickListener(){ 
      public void onClick(View v){ 
       TextView ss1=(TextView)findViewById(R.id.s2); 
       ss1.setText("st"); 

      } 
     }); 


     Button button4 = (Button)dialogView.findViewById(R.id.button4); 
     button4.setOnClickListener(new OnClickListener(){ 
     public void onClick(View v) { 
      TextView ss1=(TextView)findViewById(R.id.s2); 
       ss1.setText(""); 


      } 
     }); 



     Button button5 = (Button)dialogView.findViewById(R.id.button5); 
     button5.setOnClickListener(new OnClickListener(){ 
      public void onClick(View v) { 
       Intent mainIntent = new Intent(xxxActivity.this, SettingsActivity.class); 
       MenuView1Activity.this.startActivity(mainIntent); 
       MenuView1Activity.this.finish(); 
      } 
     }); 

     Button button6 = (Button)dialogView.findViewById(R.id.button6); 
     button6.setOnClickListener(new OnClickListener(){ 
      public void onClick(View v) { 
       Intent mainIntent = new Intent(xxxActivity.this, SettingsActivity.class); 
       xxxActivity.this.startActivity(mainIntent); 
       xxxActivity.this.finish(); 
      } 
     }); 
     return false; 




     }}); 
+0

我要告訴我的更新的代碼。現在,Lay1 onClick讓我的屏幕變得略顯黑暗。很奇怪。 – SmulianJulian

+0

有人幫忙請... – SmulianJulian

+0

我要刪除這個問題的傢伙。我需要這真的很糟糕。我希望當我給你一點點幫助時,它不會消失,因爲我刪除了這個問題。我會再次發佈,也許會有所不同。 – SmulianJulian

回答

5

看來你正試圖從靜態TextView中加載文本。可能它應該是EditText?

TextView stax1=(TextView)dialogView.findViewById(R.id.xxx); 
String sax1 = stax1.getText().toString(); 

編輯:

試試這個代碼:

lay1.setOnLongClickListener(new OnLongClickListener() { 
     public boolean onLongClick(View v)   
     {      

      LayoutInflater myLayout = LayoutInflater.from(context); 
      final View dialogView = myLayout.inflate(R.layout.alerthelp, null); 
      AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
      context); 
      alertDialogBuilder.setView(dialogView); 

      AlertDialog alertDialog = alertDialogBuilder.create(); 
      Button button1 = (Button) alertDialog.findViewById(R.id.button1); 
      button1.setOnClickListener(new OnClickListener(){ 

      public void onClick(View v) { 
       TextView stax1=(TextView)dialogView.findViewById(R.id.xxx); 
       String sax1 = stax1.getText().toString(); 
       double sx1 = Double.parseDouble(sax1); 
       TextView textviewlay1 =(TextView)dialogView.findViewById(R.id.m1ab); 
       String stringl1 = textviewlay1.getText().toString(); 
       Double doubl1 = Double.parseDouble(stringl1);  
       TextView textviewp1 = (TextView)dialogView.findViewById(R.id.inputPrice); 
       String stringp1 = textviewp1.getText().toString(); 
       Double intp1 = Double.parseDouble(stringp1); 
       double resultl1 = intp1 - (doubl1*sx1); 
       int precision21t = 100; //keep 4 digits 
       resultl1= Math.floor(resultl1 * precision21t +.5)/precision21t; 
       textViewtotalproduct.setText(String.valueOf(resultl1));  

      } 
     }); 

return false; 




     }}); 
+0

按鈕1執行計算。該textView是從另一個活動開始作爲一個EditText,但通過意圖和共享首選項保存在當前頁面,打開一個對話框來做計算或其他選擇。 – SmulianJulian

+0

我已經更新了我的答案,再試一次。 – Dimmerg

+0

我的確如你所說,我得到了NullPointerException在線right1.setOnClickListener(新的OnClickListener(){按鈕1 defintely在XML alerthelp。我不明白,我甚至抹去了我的代碼,並複製你寫的。 ...同樣的事 – SmulianJulian

1

變化

TextView stax1=(TextView)findViewById(R.id.xxx); 

TextView stax1=(TextView)dialogView.findViewById(R.id.xxx); 

希望這有助於。

+0

對話框打開後我應該改變所有的TextView,對吧? – SmulianJulian

+0

是的。所有的文字視圖都在虛化的視圖 –

+0

現在我沒有從LongClick獲取任何內容。它什麼都不做 – SmulianJulian