使用startActivityForResult()获取结果

时间:2011-12-18 13:48:54

标签: java android

我正在尝试打开我的计算器和值,然后我在这里完成的是我的页面代码(其中主要内容是显示我如何尝试获得结果)

TextView.OnClickListener listener = new TextView.OnClickListener()
{
    public void onClick(View v) 
    {
        startActivityForResult(new Intent("com.easyPhys.start.calculator"), 1);
    }
};   

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{
    // TODO Auto-generated method stub
    super.onActivityResult(requestCode, resultCode, data);
    if(resultCode==1)
    {
        Toast.makeText(this, "Pass", Toast.LENGTH_LONG).show();
    }
}

这就是我尝试从calculator.java中提供结果的方法:

mClickListener = new ButtonClickListener();
int idList[] = { R.id.button0, R.id.button1, R.id.button2,
R.id.button3, R.id.button4, R.id.button5, R.id.button6,
R.id.button7, R.id.button8, R.id.button9, R.id.buttonLeftParen,
R.id.buttonRightParen, R.id.buttonPlus, R.id.buttonDone,
R.id.buttonMinus, R.id.buttonDivide, R.id.buttonTimes,
R.id.buttonDecimal, R.id.buttonBackspace, R.id.buttonClear, R.id.buttonPow,   R.id.buttonSin, R.id.buttonCos,R.id.buttonTan,R.id.buttonAcos,R.id.buttonAtan,R.id.buttonAsin,R.id.buttonLog,R.id.buttonLog10,R.id.buttonComma,R.id.buttonToradians,R.id.buttonTodegrees };

       for(int id : idList) {
       View v = findViewById(id);
       v.setOnClickListener(mClickListener);
       }

       private class ButtonClickListener implements OnClickListener {

       @Override
       public void onClick(View v) {
       case R.id.buttonDone:

       if(mMathString.length() > 0);

   Bundle bundle = new Bundle();
   bundle.putString("str", mMathString.toString());

   Intent in = new Intent();
   in.putExtras(bundle);
   setResult(1, in);


new View.OnClickListener() {     
   @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub      
   finish();
  }
   };
    break;

任何人都可以帮助我了解我出错的地方,因为程序没有关闭并给出答案吗?

3 个答案:

答案 0 :(得分:1)

您是否确认正在调用onClick方法?我问的原因是你显示了onClick的代码,但你没有通过调用setOnClickListener来显示为equals按钮设置这个代码。

答案 1 :(得分:0)

这是错误的:

startActivityForResult(new Intent("com.easyPhys.start.calculator"), 1);

您必须在构造函数中提供当前上下文并指定类名(假设您的活动类名为modernphysics5):

startActivityForResult(new Intent(modernphysics5.this, calculator.class), 1);

编辑:

这也是错误的:

Intent in = new Intent(mMathString.toString());
setResult(1,in);

这不是Intent(String)构造函数的正确用法。如果您想发送符合您意图的字符串,则应使用Bundle

Bundle bundle = new Bundle();
bundle.putString("str", mMathString.toString());

Intent in = new Intent();
in.putExtras(bundle);
setResult(1, in);

答案 2 :(得分:0)

如果需要再回答此问题,请尝试使用:CLASS_NAME.this.finish(); (CLASS_NAME是您希望从中返回的班级名称)。