所以,我启动App,并在MainActivity的onCreate方法中更改变量值。但是当我点击按钮,它让我进入另一个Activity,在这个Activity中我尝试获取更改的变量,我只得到变量的原始值。
所以,我的问题是我不知道如何从第一个类中获取更改的变量。我该怎么做?
这是代码:
主要活动:
package com.example.getandset;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
public class MainActivity extends Activity {
//Initialised variable
String tag;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//The text that I want to show in the next class
setTag("Show this text");
}
public void setTag(String t){
tag =t;
}
public String getTag(){
return tag;
}
public void onClick_Start(View v){
//start of the next Class
startActivity(new Intent(this, CalledActivity.class));
}
}
并且被称为活动:
package com.example.getandset;
import android.os.Bundle;
import android.app.Activity;
import android.widget.TextView;
public class CalledActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_called);
TextView tv = (TextView)findViewById(R.id.textView);
//trying to get the changed variable
tv.setText("Got text: "+ new MainActivity().getTag());
}
}
答案 0 :(得分:0)
public void onClick_Start(View v){
//start of the next Inten
Intent intent = new Intent(this, CalledActivity.class)
intent.putExta("key",getTag()) ;
startActivity(intent );
}
将来自CalledActivity的标记文本传递给onCreate方法
String value = getIntent().getStringExtra("key");
答案 1 :(得分:0)
您创建了MainActivity
的新实例,其tag
已初始化为null
。一般情况下,您不应该像这样实例化Activity
,始终让系统使用startActivity
启动它们。
有几种方法可以达到你想要的效果:
CalledActivity
答案 2 :(得分:0)
您不应该在Main活动中进行此类数据调用。它与对象类不同,因此行为也不同。 (问题在于您正在调用类,而不是对象的初始化实例)
您需要做的是使用包含数据包的INTENT启动活动。
public void sendMessage(View view) {
Intent intent = new Intent(this, DisplayMessageActivity.class);
EditText editText = (EditText) findViewById(R.id.edit_message);
String message = editText.getText().toString();
intent.putExtra(EXTRA_MESSAGE, message);
startActivity(intent);
}
(这直接来自android开发指南)
然后在第二个活动中,使用
Intent intent = getIntent();
String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
您可以使用任意数量的变量/变量类型来执行此操作。
您的另一个选择是创建一个“保持”变量的对象类。以与上面相同的方式传递该对象,然后使用.getVariable();正常调用类中的变量。