2014-02-28 23 views
1

我是android新手。如何在一個活動中用Edittext Value重命名按鈕?

我想給一個edittext值並將其設置爲一個按鈕文本。 我可以做到這一點,當edittext和按鈕在單獨的活動(意圖和額外),但他們在同一活動時呢?

這裏是我迄今爲止得到的代碼(我使用對話框獲取的EditText值和EditText上處於「addalbumsdialog」佈局):

public class Albums extends Activity { 
Button b1; 
EditText et1; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.album); 

    Button b2 = (Button) findViewById(R.id.addalbum); 

    b2.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      startDialog(); 
     } 
    }); 
} 

protected void startDialog() { 
    AlertDialog.Builder myAlertDialog = new AlertDialog.Builder(this); 
    LayoutInflater inflater = this.getLayoutInflater(); 
    et1 = (EditText) findViewById(R.id.editText1); 
    myAlertDialog.setTitle("Name?"); 
    myAlertDialog.setView(inflater.inflate(R.layout.addalbumsdialog, null)); 
    myAlertDialog.setPositiveButton("OK", new DialogInterface.OnClickListener() { 

     @Override 
     public void onClick(DialogInterface arg0, int arg1) { 
      b1 = (Button) findViewById(R.id.album1); 
      b1.setText(et1.getText().toString()); 
      b1.setVisibility(View.VISIBLE); 

     } 
    }); 
    myAlertDialog.show(); 
} 

} 

感謝。

+0

有啥不對您code.??Where你被卡住? –

+0

您可以在不啓動新活動的情況下執行相同操作。 –

+1

@ kaylan pvs:它不起作用,當我在對話框中單擊「確定」時,出現「強制關閉」錯誤。 –

回答

1

您需要更改

View view = (View) inflater.inflate(R.layout.addalbumsdialog, null); 
myAlertDialog.setView(view);  
et1 = (EditText) view.findViewById(R.id.editText1); 
myAlertDialog.setTitle("Name?"); 

申報按鈕變量實例

Button b2; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
// TODO Auto-generated method stub 
super.onCreate(savedInstanceState); 
setContentView(R.layout.album); 
b2 = (Button) findViewById(R.id.addalbum); 

然後在按鈕點擊

@Override 
public void onClick(DialogInterface arg0, int arg1) { 
     b2.setText(et1.getText().toString(); 

    } 
}); 

如果按鈕b1屬於膨脹的觀點,你需要給它設置文本

然後

protected void startDialog() { 
AlertDialog.Builder myAlertDialog = new AlertDialog.Builder(this); 
View view = (View) inflater.inflate(R.layout.addalbumsdialog, null); 
myAlertDialog.setView(view);  
et1 = (EditText) view.findViewById(R.id.editText1); 
b1 = (Button) view.findViewById(R.id.album1); 
myAlertDialog.setTitle("Name?"); 
myAlertDialog.setView(inflater.inflate(R.layout.addalbumsdialog, null)); 
myAlertDialog.setPositiveButton("OK", new DialogInterface.OnClickListener() { 

    @Override 
    public void onClick(DialogInterface arg0, int arg1) { 
     b1.setVisibility(View.VISIBLE); 
     b1.setText(et1.getText().toString()); 

    } 
}); 
myAlertDialog.show(); 
} 

您還沒有提到要更改哪個按鈕文本。所以貼都

0

更換這樣

public class Albums extends Activity { 
    Button b1; 
    EditText et1; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.album); 

     Button b2 = (Button) findViewById(R.id.addalbum); 
     b1 = (Button) findViewById(R.id.album1); 

     b2.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 
       startDialog(); 
      } 
     }); 
    } 

    protected void startDialog() { 
     AlertDialog.Builder myAlertDialog = new AlertDialog.Builder(this); 
     LayoutInflater inflater = this.getLayoutInflater(); 
     et1 = (EditText) findViewById(R.id.editText1); 
     myAlertDialog.setTitle("Name?"); 
     myAlertDialog.setView(inflater.inflate(R.layout.addalbumsdialog, null)); 
     myAlertDialog.setPositiveButton("OK", new DialogInterface.OnClickListener() { 

      @Override 
      public void onClick(DialogInterface arg0, int arg1) {   
       b1.setText(et1.getText().toString()); 


      } 
     }); 
     myAlertDialog.show(); 
    } 

    } 
+0

不工作。單擊「確定」時,出現「強制關閉」錯誤。 –

+0

你能給我錯誤日誌嗎? –

+0

問題通過另一個答案解決。謝謝。 –

1

的代碼,就應該替換該

LayoutInflater inflater = this.getLayoutInflater(); 
    et1 = (EditText) findViewById(R.id.editText1); 
    myAlertDialog.setTitle("Name?"); 
    myAlertDialog.setView(inflater.inflate(R.layout.addalbumsdialog, null)); 

隨着

View view = (View) inflater.inflate(R.layout.addalbumsdialog, null); 
myAlertDialog.setView(view);  
et1 = (EditText) view.findViewById(R.id.editText1); 
b1 = (Button) view.findViewById(R.id.album1); 
myAlertDialog.setTitle("Name?"); 

並添加創建Button b2像實例變量:

Button b2; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
// TODO Auto-generated method stub 
super.onCreate(savedInstanceState); 
setContentView(R.layout.album); 
b2 = (Button) findViewById(R.id.addalbum); 

,然後點擊按鈕

@Override 
public void onClick(DialogInterface arg0, int arg1) { 
    b2.setText(et1.getText().toString(); 

    } 
}); 
+0

謝謝。由你和另一個答案解決。 –

相關問題