1

我是一个初学者,我正在尝试制作一个 Intent Calculator,这意味着我正在通过 Intent extras 添加输入并开始一个新的活动来计算输入。最后,我尝试使用 onActivityResult() 接收结果。问题是我已将结果设置为文本视图,文本视图将其检测为双精度值(从默认文本显示 0.0)。我无法理解问题出在哪里,因为 Logcat 甚至没有错误。下面是我的代码。当我按下按钮时,它只显示 0.0。不管我点击多少次。我也在练习 Intents,所以只尝试了基本的 Intents。请帮助我。

public class InputActivity extends Activity {


final int CALCULATION_COMPLETE = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_input);

    final EditText num1 = (EditText) findViewById(R.id.num1_edit);
    final EditText num2 = (EditText) findViewById(R.id.num2_edit);

    Button add = (Button) findViewById(R.id.resultButton);

    add.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
        String  firstNum =  num1.getText().toString();
        String secondNum = num2.getText().toString();

        Intent resultIntent = new Intent(InputActivity.this,ResultActivity.class);
        resultIntent.putExtra("first", firstNum);
        resultIntent.putExtra("second", secondNum);
        startActivityForResult(resultIntent, CALCULATION_COMPLETE);
        }
    });     
}

@Override
protected void onActivityResult(int reqCode, int resCode, Intent d){
    super.onActivityResult(reqCode, resCode, d);
    TextView result = (TextView) findViewById(R.id.result);
    if(reqCode == CALCULATION_COMPLETE && resCode == RESULT_OK){

        Intent resultData = getIntent();
        Double addResult = resultData.getDoubleExtra("result", 0);

        String resultStr = addResult.toString();

        result.setText(resultStr);
    }
}

}

public class ResultActivity extends Activity{

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);

    Intent calcIntent = getIntent();
    String firstStr = calcIntent.getStringExtra("first");
    String secondStr = calcIntent.getStringExtra("second");

    Double firstNum = Double.parseDouble(firstStr);
    Double secondNum = Double.parseDouble(secondStr);

    Double addResult = firstNum + secondNum;

    Intent result = new Intent();
    result.putExtra("result", addResult);

    setResult(RESULT_OK, result );
    finish();       
}

}

4

1 回答 1

2

d是你的Intent变量,onActivityResult()所以尝试改变

    @Override
protected void onActivityResult(int reqCode, int resCode, Intent d){
    super.onActivityResult(reqCode, resCode, d);
    TextView result = (TextView) findViewById(R.id.result);
    if(reqCode == CALCULATION_COMPLETE && resCode == RESULT_OK){

        Intent resultData = getIntent();

        Intent calcIntent = getIntent();

@Override
protected void onActivityResult(int reqCode, int resCode, Intent d){
    super.onActivityResult(reqCode, resCode, d);
    TextView result = (TextView) findViewById(R.id.result);
    if(reqCode == CALCULATION_COMPLETE && resCode == RESULT_OK){

        Intent resultData = d;  //This line here

如果这不能解决您的问题,那么请更清楚地了解发生了什么/没有发生什么。

另外,我同意 Monad 的评论。虽然它不应该引起问题,但执行所有这些操作似乎有点奇怪,并且使用一个或一些用户输入onCreate()可能会好一些。Button否则,确实不需要单独的Activity,但您可以使用函数在 first 中进行计算Activity

编辑

从文档

返回启动此活动的意图。

所以这不会返回Intent从第二个传递ActivitysetResult(). 它将返回一个Intent开始这个Activity你可能会使用的onCreate()。在这种情况下,Activity没有开始,而是在第二个Activity完成并被setResult()调用时回到堆栈顶部。

于 2013-09-03T19:10:25.500 回答