Android - 在onCreate之前更改类变量

时间:2014-02-17 06:25:30

标签: java android class

我是Android开发的新手。当我按下主要活动上的按钮时,我正试图调用我的一个类的方法。

在我的主要活动上,我有这个按钮:

public void buttonTest(){
    Button b = (Button) findViewById(R.id.test);                
    b.setOnClickListener(new View.OnClickListener() {       
        @Override
        public void onClick(View arg0) {                    
            String s = "changeText:myText";
            Intent in = new Intent(PlusActivity.this, Test.class);  
            in.putExtra("method",s);
            startActivity(in);              
        }
    });
}

以下是上面打算调用的类(没有导入)。

public class Test extends Activity {

    static String text = "test";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test);
        TextView mTextView = (TextView) findViewById(R.id.textView);
        mTextView.setText(text);
    }

    public void changeText(String s){
        this.text = s;      
    }

    @Override
    protected void onNewIntent(Intent intent) {
       super.onNewIntent(intent);
       String[] array = intent.getStringExtra("method").split(":");
       if(array[0].equals("changeText")){
          changeText(array[1]);
       }
    }   

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.test, menu);
        return true;
    }   
}

基本上我想知道是否可以在String text之前更改onCreate()的值。基本上每个按钮都有一个相应的文本,我希望能够根据哪个按钮修改该文本。

如果是,我该怎么做/改变?

提前致谢。

3 个答案:

答案 0 :(得分:5)

正确的方法是在意图中发送你想要的字符串作为额外内容,并从意图中读取额外内容并将其分配给onCreate函数中的该变量。

答案 1 :(得分:1)

使用SharedPreference。保存在第一堂课的OnCLick中并在第二课的OnCreate中检索。

<强>初始化

SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", 0); // 0 - for private mode
Editor editor = pref.edit();

存储数据

editor.putBoolean("key_name", true); // Storing boolean - true/false
editor.putString("key_name", "string value"); // Storing string
editor.putInt("key_name", "int value"); // Storing integer
editor.putFloat("key_name", "float value"); // Storing float
editor.putLong("key_name", "long value"); // Storing long

editor.commit(); // commit changes

检索数据

// returns stored preference value
// If value is not present return second param value - In this case null
pref.getString("key_name", null); // getting String
pref.getInt("key_name", null); // getting Integer
pref.getFloat("key_name", null); // getting Float
pref.getLong("key_name", null); // getting Long
pref.getBoolean("key_name", null); // getting boolean

删除数据

editor.remove("name"); // will delete key name
editor.remove("email"); // will delete key email
editor.commit(); // commit changes

清算存储空间

editor.clear();
editor.commit(); // commit changes

答案 2 :(得分:1)

String text;
if (savedInstanceState == null) {
    extras = getIntent().getExtras();
    if(extras == null) {
        text= null;
    } else {
        text= extras.getString("your default string message");
    }
} else {
    String s = "your default string message";
    text= (String) savedInstanceState.getSerializable(s);
}