从另一个类获取变更变量?

时间:2013-08-26 14:30:09

标签: java android class variables

所以,我启动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());
    }


}

3 个答案:

答案 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();正常调用类中的变量。