从1个活动中获取值并发送到第2个活动

时间:2012-12-01 22:51:14

标签: android

因此,我试图在主活动中提供的2个EditTexts中输入用户输入的2个整数值,并将它们一起添加。然后,我希望android应用程序切换到第二个Activity,并在EditText框中显示从前一个(主)Activity中输入2 EditText框的2个值的总和。

我认为我走在正确的轨道上,但我不太确定如何在第二项活动中获得总和。我试过搞乱捆绑等等,但我仍然无法弄明白。

* *重新编辑以反映一些建议。第二个活动仍然没有显示总数......我认为这是某种转换错误。

***我几乎肯定它与第二个活动有关......第一个看起来对我来说

** PERFECT!这是转换错误。谢谢大家的帮助:D

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;


public class MainActivity extends Activity 
{   

    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) 
    {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

    public void OnClick(View v) //android:onClick="OnClick"   added to activity_main.xml for this button
    {
        Intent intent = new Intent(MainActivity.this, Summation.class);
    EditText v1 = (EditText)findViewById(R.id.editText1);
    EditText v2 = (EditText)findViewById(R.id.editText2);   
    int first =  Integer.parseInt(v1.getText().toString());
    int second = Integer.parseInt(v2.getText().toString());
    String sum = String.valueOf(first + second);
    intent.putExtra("sum", sum);
    startActivity(intent);          
    }
}

第二个活动类

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.EditText;

public class Summation extends Activity 
{
    //Second Activity 

    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {   
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_2);        
        String sum = (getIntent().getExtras().getString("sum"));
        EditText addsum = (EditText)findViewById(R.id.editText1);
        addsum.setText(sum);

    }   
}

3 个答案:

答案 0 :(得分:1)

您无法直接从edittext分配int值。您需要分配编辑文本,如

EditText eText1 = (EditText) findViewById(R.id.yourfirstedittext)

与你的第二个相同。然后获取值

int firstNum = Integer.parseInt(eText1.getValue.toString())

当然与第二个相同。然后,您可以将这两个ints添加到一起,只需将其与intent.putExtra("sume, sum)一起传递即可。然后使用Activity

在第二个getIntent()中获取它们
Intent ci = getIntent();
final int sum = ci.getIntExtra("sum", yourDefaultIntValue)

如果您作为int传递,则需要以这种方式执行,并获得String的{​​{1}}值。但如果你作为int传递,那么你很好

答案 1 :(得分:0)

嗯,一切都近乎完美,但是如果你没有将你的软件包附加到Indent,那么为bundle添加值是没有意义的,这就是你忘记的步骤:)所以要么添加

    intent.putExtras( bundle );

或使您的代码不使用其他代码,而是看起来像:

    Intent intent = new Intent();
    int value1 =(R.id.editText1);
    int value2 =(R.id.editText2);
    double sum = (value1 + value2);
    intent.putExtra("sum", sum);
    intent.setClass(MainActivity.this, Summation.class);
    startActivity(intent);

答案 2 :(得分:-1)

那太近了!在您的第一个活动中,请记住在startActivity(intent)

之前执行此操作
intent.putExtras(bundle);

然后在第二个活动类的onCreate方法结束时尝试:

String valu = getIntent().getExtras().getString("sum");
EditText addsum = (EditText)findViewById(R.id.editText1);
addsum.setText(valu, TextView.BufferType.NORMAL);