如何从另一个活动类设置文本

时间:2014-12-25 10:14:25

标签: java android android-activity textview

我长期坚持这个问题。我觉得它很简单,但我是一个新手Android开发人员,所以非常感谢你的帮助。

我有两项活动。我的主要活动布局有一个textview和一个按钮。我想要做的是实现按钮来从另一个活动类(Btn类)更改textview的文本。

这是我的Btn课程

public class Btn extends Activity implements OnClickListener {
    Button btn;
    TextView textBox;

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.activity_main); 
        btn = (Button) findViewById(R.id.btn);  
        textBox = (TextView)findViewById(R.id.address);
        btn.setOnClickListener(this);           
    }

    @Override
    public void onClick(View v) {
        textBox.setText("Test Test");
    }

}

现在这个编译并且工作正常但是当我按下按钮时没有任何反应。 我想知道当我按下按钮时如何更改textview的文本。我知道如何在我的主要活动课中这样做,但我想从另一个班级做到这一点。

2 个答案:

答案 0 :(得分:1)

请尝试实施以下代码,

MainActivity.java

    public class MainActivity extends Activity implements OnClickListener {

    Button btn;
    TextView textBox;

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.activity_main); 
        btn = (Button) findViewById(R.id.btn);  
        textBox = (TextView)findViewById(R.id.address);
        btn.setOnClickListener(this);           
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.btn:
            String strTemp = "Test Test";
            textBox.setText(strTemp);

            Intent intent = new Intent(MainActivity.this, Second.class);
            intent.putExtra("tempstring", strTemp);
            startActivity(intent);
            break;

        default:
            break;
        }

    }
}

Second.java

 public class Second extends Activity {

    private TextView txtTemp;

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

        txtTemp = (TextView) findViewById(R.id.txt_temp);

        Intent intent = getIntent();
        String strTemp = intent.getStringExtra("tempstring");

        txtTemp.setText(strTemp);
    }
}

希望它适合你。

答案 1 :(得分:1)

即使你真的是一个完整的新手,在Activity之后要学习的第二件事是Intent。 没有一个Activity可以检索对象'来自另一个的数据和属性直接发送更改,它对运行时来说是不安全的,因为您无法100%确定后台活动不会被系统杀死。 因此,Intents被发明用于调用Activities并将数据传递给它们。 Android Coders提供的代码以这种方式工作。首先,您创建一个Intent对象,将额外的数据(例如您要设置的文本设置为另一个Activity的TextView),最后启动一个负责此类Intent的Activity。在此代码中,Intent是显式的,这意味着应该调用某个包的某个Activity。在这个Activity中,有一个代码可以检查是否有被调用的Intent,从中读取额外的数据(你的文本),最后调用setText()。 根据数据和操作的类型,还有隐式Intent。它取决于系统,让您在设备上存在的所有包中的所有活动之间进行选择,这些活动可以处理您提供给Intent的数据类型。 没有什么是个人的,但如果你不能理解Intents,你就不会理解Android。非常努力。