2012-04-19 111 views
0

我想使用EditText one one Activity來更改另一個按鈕上的文本。我知道我必須通過SharedPreferences,儘管這是我卡住的地方。如何使用Android上的EditText更改按鈕的文本

活動與Button:

protected void onResume() { 
    super.onResume(); 

    class1.setText(this.getButtonText()); 
} 

public String getButtonText() 
{ 
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); 
    String buttonText = prefs.getString("ButtonText", "Default button text"); // I am not sure how to get the button text here. This is what someone was trying to have me do? 
    return buttonText; 
} 

這是我的活動具有的EditText和按鈕返回到與按鈕的活動:

public class EditClass1 extends Activity implements OnClickListener{ 

    Button class1; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.editclass1); 

     SettingButtons(); 
     class1.setOnClickListener(this); 
    } 

    private void SettingButtons() { 
     // TODO Auto-generated method stub 
     class1 = (Button) findViewById(R.id.edittoclass1); 
    } 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     switch(v.getId()){ 
     case R.id.edittoclass1: 
      startActivity(new Intent("com.clayton.calendar.TOCLASS")); 
     break;  
     } 
    } 

    @Override 
    protected void onPause() { 
     // TODO Auto-generated method stub 
     super.onPause(); 
     SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); 
     Editor editor = prefs.edit(); 
     editor.putString("ButtonText", // This is not working 
      ((TextView)findViewById(R.id.edittoclass1)).getText().toString()); 
     editor.commit(); 
    } 
} 

回答

1

試試這個:

@Override 
protected void onPause() { 
// TODO Auto-generated method stub 
super.onPause(); 
EditText text = (EditText)findViewById(R.id.Setclass); 
String text2 = text; 
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); 
Editor editor = prefs.edit(); 
editor.putString("ButtonText", // This is not working 
     ((TextView)findViewById(R.id.edittoclass1)).getText().toString()); 
editor.commit(); 

}

+0

肯定這'String text2 = text;'會工作嗎? – waqaslam 2012-04-19 20:46:26

+0

它應該是'字符串text2 = text.getText()。toString()' – zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 2012-04-19 20:48:24

0

暫時忽略共享首選項,爲什麼不公開靜態包含該按鈕的類中的字符串變量。

public static String buttonText = "somthing"; 

當包含您可以在其中偵聽更改編輯文本或在按下一個按鈕,觸發一個事件處理程序的事件處理程序調用編輯文本的類。

ButtonActivity.buttonText = text.getText(); 

然後在含有按鈕

button.setText(buttonText); 

的活動的onResume()方法試試這個可能是做你想要什麼簡單的方法。請記住,在聲明buttonText變量時,請確保您記得使用關鍵字靜態。沒有它,你需要直接引用該對象,使用static關鍵字,你可以引用所需的類。但是,靜態按鈕Text對於包含活動的按鈕的所有實例都是相同的。如果您只打算開展一項活動,那麼這就是您的解決方案。如果沒有,那麼你必須得到更多的創意。

+0

是的,我想要做多個,所以我不能做靜態。 – user1334858 2012-04-19 21:29:54

+0

然後,您需要將包含按鈕的對象的引用傳遞給包含編輯文本的對象。我建議你用以下術語「在活動android之間傳遞一個對象」進行網絡搜索。 – 2012-04-19 23:43:10

相關問題