如何从活动的EditText获取值以在另一个活动上使用它?

时间:2011-10-27 09:38:42

标签: android android-intent android-edittext

如何从EditText(editProtein)获取价值

protected void protein() {
    EditText editCalorie = (EditText)findViewById(R.id.editCalorie);
    double pro = Double.parseDouble(editCalorie.getText().toString());
    EditText editProtein = (EditText)findViewById(R.id.editProtein);
    editProtein.setText(Double.toString(pro * 0.25 * 4));
}

关于在另一项活动中使用它的活动? 我应该在活动和其他活动上使用什么代码,谢谢

3 个答案:

答案 0 :(得分:4)

您可以通过多种不同的方式在不同的Activity类之间共享数据。您如何做到这一点取决于您的具体应用程序以及数据应具有的生命周期。

第一种方法是通过Activity方法将其传递给您从第一个Activity启动的新putExtras(),以将任意信息发送到其他活动。要启动第二个Activity,请使用Intent;你正在做的是打包一些额外的任意数据(在这种情况下可能是你的蛋白质):

Bundle bundle = new Bundle();
bundle.putString(“some_protein_stuff″, textStringFromYourEditText);

Intent newIntent = new Intent(this.getApplicationContext(), ActivityClass2.class);
newIntent.putExtras(bundle);
startActivityForResult(newIntent, 0);

在ActivityClass2上,我们可以使用以下语法读取此参数:

Bundle bundle = this.getIntent().getExtras();
String param1 = bundle.getString(“some_protein_stuff″);

但是,作为替代方案,您可能还需要考虑使用共享首选项,而不是在调用数据时将数据传递给新Activity。这是一种机制,通过该机制,您可以通过键值对在应用程序中非常轻松地存储数据。如果您可能希望在各种其他EditText类中使用用户通过Activity输入的值,并且还希望在关闭应用程序并再次打开时使用相同的值之后,只需将其从共享首选项中拉回来,它仍然可用。首选项非常易于使用,并且有关于SO或其他地方的各种教程。

作为另一种选择,您可以考虑通过创建扩展android.app.Application的类来创建类似“全局”的数据,或者创建一个Singleton类,从而实现类似的结果。

在启动新Intent时,使用Activity捆绑数据的第一个最明显的解决方案是可能您所追求的内容,但后两个建议可能也应该感兴趣,具体取决于您的应用程序的工作方式以及您希望如何保留数据。

答案 1 :(得分:1)

您可以将值传递给其他活动。类似的东西:

intent.putExtra("CALORIE", calorie);
intent.putExtra("PROTEIN", protein);

对应于此,在要使用这些值的活动中,使用类似:

的内容
Bundle extras = getIntent().getExtras();
if(extras !=null) {
    double calorie = extras.getDouble("CALORIE");
    double protein= extras.getDouble("PROTEIN");
}

答案 2 :(得分:0)