2013-07-23 2 views
0

원래 코드가 삭제되었으므로 새로운 작업 코드가 표시됩니다. 코드의 배경은 사용자가 제공하는 사용자 정의 이름이있는 레이아웃 내에 새 textView를 만드는 것입니다. 이전에는 NPE 오류가 발생했습니다. 이것은 수정 사항입니다. 질문이 있으시면 언제든지 문의하십시오.대화 상자에서 단추를 만들 때

EDIT : 실측치

픽스는 다음로서 필요한 용액 :

가 builder.setPositiveButton

builder.setPositiveButton(R.string.btn_save, new DialogInterface.OnClickListener(){ 
     public void onClick(DialogInterface dInterface, int whichButton) 
     { 

      LinearLayout lineLayout = (LinearLayout)findViewById(R.id.linear_layout); 

      String newAccountName = accountEdit.getText().toString(); 

      newTextView = new TextView(getBaseContext() ); 


      newTextView.setVisibility(View.VISIBLE); 
      newTextView.setText( newAccountName ); 
      newTextView.setId(id); 
      newTextView.setTextSize(35); 

      newTextView.setOnClickListener(new View.OnClickListener() { 
       public void onClick(View view) { 
        onClickNew(view); 
       } 
      }); 
      newTextView.setOnLongClickListener(new View.OnLongClickListener() { 
       @Override 
       public boolean onLongClick(View view) { 
        Toast.makeText(getBaseContext(), "Testing" , Toast.LENGTH_LONG).show(); 
        return true; 
       } 
      }); 

내의 다음

accountEdit = new EditText(this); // accountEdit needs to be a global variable 

이 버튼을 생성 할뿐만 버튼의 이름을 대화 상자의 EditText에있는 정보로 설정하십시오. 이전에는 EditText가 다른 활동에서 나왔고 잘못 호출되어 NPE가 발생했습니다. 모든 도움을 주셔서 감사합니다.

+0

XML에 R.id.newAccountButton이 있습니까? – Catherine

+0

모든 코드를 보지 않고도 대화 상자에보기가 있으므로 대화 상자에서 'findViewById'를 호출하면 실제로 findViewById() 활동 대신 dialogView.findViewById가 호출됩니다. – Wenhui

답변

0

Wenhui가 계시 했으므로 버튼의 onclick 수신기 내부에서 finViewById를 호출하므로 잘못된 컨텍스트가 사용됩니다. 다음 예제와 같습니다.

final EditText accountEdit = (EditText)findViewById(R.id.newAccountButton); 
final String newAccountName = accountEdit.getText().toString(); 
final LinearLayout lineLayout = (LinearLayout)findViewById(R.id.linear_layout); 
builder.setPositiveButton(R.string.btn_save, new DialogInterface.OnClickListener(){ 
    public void onClick(DialogInterface dInterface, int whichButton) 
    { 
     newTextView = new TextView(getBaseContext()); 

     newTextView.setVisibility(View.VISIBLE); 
     newTextView.setText("Test"); 
     newTextView.setId(id); 
     newTextView.setTextSize(35); 

     newTextView.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View view) { 
       onClickNew(view); 
      } 
     }); 

     lineLayout.addView(newTextView); 
     id++; 
    } 
}); 
관련 문제