Android传递数据

Android传递数据,android,Android,我需要一些关于我正在为使用eclipse的android编写的应用程序的建议。我正在编写一个应用程序,它添加2个数字,并使用一个intent将数据传递回第一个活动。我不确定是否使用intent.putExtra(num1+num2),如有任何建议,将不胜感激。谢谢-您在第一次活动中需要: Intent i = new Intent(this, SecondActivity.class); startActivityForResult(i, 1); protected void onActivi

我需要一些关于我正在为使用eclipse的android编写的应用程序的建议。我正在编写一个应用程序,它添加2个数字,并使用一个intent将数据传递回第一个活动。我不确定是否使用intent.putExtra(num1+num2),如有任何建议,将不胜感激。谢谢-

您在第一次活动中需要:

Intent i = new Intent(this, SecondActivity.class);
startActivityForResult(i, 1);

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    if (requestCode == 1) {
        if(resultCode == RESULT_OK){
            int result=data.getIntExtra("result");
        }
        if (resultCode == RESULT_CANCELED) {
            //Write your code if there's no result
        }
    }
}//onActivityResult
在你们班上,这是做数学题的:

Intent returnIntent = new Intent();
returnIntent.putExtra("result",sumOfNumbers);
setResult(RESULT_OK,returnIntent);
finish();

您可以启动使用startActivityForResult()添加2个数字的活动,然后实现onActivityResult()回调以接收结果

在添加2个数字的活动中,可以使用setResult(resultCode,Intent)设置结果:


查看Android文档:

您需要使用父Activity类的onActivityResult函数

int RESULT_CODE_CHILD_ACTIVITY = 1;

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) 
{
    super.onActivityResult(requestCode, resultCode, data);
    switch(requestCode) 
    {
        case (RESULT_CODE_CHILD_ACTIVITY) : 
        {
            if (resultCode == Activity.RESULT_OK) 
            {
                int yourInt = data.getIntExtra("yourInt", -1);
            }
            break;
        } 
    }
}
您需要覆盖子活动的onDestroy函数以将数据传回

@Override
public void onDestroy() 
{
    Intent resultIntent = new Intent();
    int yourInt = 5 + 4;
    resultIntent.putExtra(yourInt, "yourInt");
    setResult(Activity.RESULT_OK, resultIntent);
    super.onDestroy();
}

假设您从活动A转到活动B,并且您希望将某些内容返回到活动A,那么下面是一个示例。希望有帮助:

代码转到活动B o按钮单击:

button1.setOnClickListener(new OnClickListener() {  

        @Override  
        public void onClick(View arg0) {  
            Intent intent=new Intent(MainActivity.this,SecondActivity.class);  
            startActivityForResult(intent, 2);
            //2 is the request code. u can choose ur own.
        }  
    });  
同样在相同的activity override onActivityResult方法中:

@Override  
   protected void onActivityResult(int requestCode, int resultCode, Intent data)  
   {  
             super.onActivityResult(requestCode, resultCode, data);  

              // check if the request code is same as what is passed  here it is 2  
               if(requestCode==2)  
                     {  
                        Int x = data.getIntExtra ("num1");
                        Int y = data.getIntExtra ("num2");

                     }       
 }  
在你的活动B中

button1.setOnClickListener(new OnClickListener() {  

            @Override  
            public void onClick(View arg0) {  
                Bundle b = new Bundle();  
                b.putIntExtra("num1", int1);
                b.putIntExtra("num2", int2);
                Intent i = new Intent();
                i.put(b);
                finish();//finishing activity  
            }  
        });  

你需要开始使用TractivityForresult和onActivityResult之类的东西。如果你不知道,请告诉我。我将试着用intent.putExtra(“added_vals”,num1+num2)来解释它;如果你想那样做的话。但问题是,活动应该是添加数据本身。因此,在您的活动中,您应该执行num1+num2=addedNumber并使用intent.putExtra(“added_val”,addedNumber);或者别的什么。非常感谢——我真的很感激。
button1.setOnClickListener(new OnClickListener() {  

            @Override  
            public void onClick(View arg0) {  
                Bundle b = new Bundle();  
                b.putIntExtra("num1", int1);
                b.putIntExtra("num2", int2);
                Intent i = new Intent();
                i.put(b);
                finish();//finishing activity  
            }  
        });