0

我正在尝试使用 EditText 一个 Activity 来更改另一个按钮的文本。我知道我必须通过 SharedPreferences,虽然这是我卡住的地方。

带有按钮的活动:

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;
}

这是我的 Activity,它有 EditText 和按钮,可以通过按钮返回到 Activity:

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();
    }
}
4

2 回答 2

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();

}

于 2012-04-19T20:33:13.210 回答
0

暂时忽略共享偏好,为什么不在包含按钮的类中使用公共静态字符串变量。

public static String buttonText = "somthing";

当在包含编辑文本的类中时,您可以调用一个事件处理程序,该处理程序侦听编辑文本的更改或按下按钮时触发的事件处理程序。

ButtonActivity.buttonText = text.getText();

然后在包含按钮的activity的onResume()方法中

button.setText(buttonText);

试试这个,它可能是做你想做的更简单的方法。请记住,在声明 buttonText 变量时,请确保您记得使用static关键字。如果没有它,您将需要直接引用对象,使用 static 关键字,您可以只引用所需的类。但是,对于包含活动的按钮的所有实例,作为静态按钮文本将是相同的。如果您只打算拥有一个活动实例,那么这就是您的解决方案。如果没有,那么你必须更有创意。

于 2012-04-19T20:45:45.010 回答