我是初学者,我正在尝试制作一个Intent计算器,意味着我通过Intent extras添加输入并开始计算输入的新活动。最后,我试图使用onActivityResult()来接收结果。问题是我已将结果设置为文本视图,文本视图将其检测为double值(从默认文本显示0.0)。我无法理解问题所在,因为Logcat中没有错误。以下是我的代码。当我按下按钮时,它只显示0.0。无论我点击多少次。此外,我正在练习意图,所以只尝试了基本的。请帮助我。
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();
}
}
答案 0 :(得分: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
,但您可以使用函数在第一个Activity
中进行计算。
修改强>
返回开始此活动的意图。
所以这不会返回Intent
中第二个Activity
传递的setResult()
。它将返回Intent
,该Activity
可能会在onCreate()
中使用Activity
。在这种情况下,Activity
未启动,但在第二个setResult()
完成并调用{{1}}时返回到堆栈顶部。