1

사용자 정의보기에서 부풀려 AlertDialog을 가져 오려고합니다. 나는 문제가 무엇인지 알 것 같지만 그것을 고치는 법을 모른다. 나는 LongClick에서 (View V)를 가지고 있고 Button1은 "alertdialog"를 사용하여 데이터를 찾습니다. 줄에 NullPointer 예외가 발생했습니다. TextView stax1 = (TextView) findViewById (R.id.xxx); 의미가있는 유일한 것은 대화 상자가 "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

n이 질문을 삭제하려고합니다. 나는 이것을 정말로 필요로한다. 내가 그 질문을 삭제했기 때문에 내가 네게 도움이 될만한 점을 줄 때가 되었으면 좋겠어. 나는 그것을 다시 게시 할 것이고 아마도 약간 다른 질문을 할 것이다. – 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

나는 당신이 말한 것과 정확히 일치했다. 다시 button1.setOnClickListener (new OnClickListener() {button 1은 XML alerthelp에 defintely있다. 이해가 안되며, 코드를 지우고 쓴 것을 복사했다. ... 같은 것 – SmulianJulian

1

변경

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

희망

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

에이 도움이됩니다.

+0

대화 상자가 열리면 모든 TextView를 변경해야합니다. 맞습니까? – SmulianJulian

+0

예. 팽창 된보기에있는 모든 textviews –

+0

이제는 LongClick에서 아무것도 얻지 못합니다. 아무것도하지 않습니다 – SmulianJulian