How to return results from one activity to another using an Intent in Android?
本问题已经有最佳答案,请猛点这里访问。
所以,这就是东西 - 我有一个mainactivity类和一个Splash类。 mainactivity包含两个TextView和一个按钮。现在,我有我的splash类,它有两个editTexts和一个Ok Button。我的目标是当我运行android程序时,主要活动加载。然后我点击按钮,Splash活动加载。在splash活动中,我在EditText框中输入两个数字,这些数字将在Intent对象中捕获,并在Main Activity中的相应TextView标签中返回。现在,当我尝试捕获一个值并在原始活动(主要活动)中返回该值时,我的代码工作正常,但当我尝试使用两个值并使用相同的概念时,我在Splash活动中输入的第二个数字将覆盖第一个活动,我看到第二个数字重复两次。我该如何解决?如何在intent中捕获多个值,并将它们返回到Main Activity类中的相应标签中。这是代码: -
MainActivity.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | package com.example.user.androidpractise4; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.Window; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends Activity { Button b; int code = 1; String a,c; int num; int num1; TextView t,v; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); b = (Button)findViewById(R.id.Btn1); t = (TextView)findViewById(R.id.textView2); v = (TextView)findViewById(R.id.TextV); b.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { startActivityForResult(new Intent("com.example.user.androidpractise4.SPLASH"), code); } }); } public void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == code) { if (resultCode == RESULT_OK) { // Toast.makeText(this, data.getData().toString(), //Toast.LENGTH_SHORT).show(); a = data.getData().toString(); num = Integer.parseInt(a); t.setText("" + num); |
//这是我试图即兴创作的部分,但它不起作用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | c = dat.getData().toString(); num1 = Integer.parseInt(c); t.setText("" + num1); int total = num1 + num; } } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } } |
Splash.java:-
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | package com.example.user.androidpractise4; import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; /** * Created by user on 11-08-2015. */ public class Splash extends Activity { Button b1; EditText display,disp; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.splash); b1 = (Button)findViewById(R.id.button); display = (EditText)findViewById(R.id.editText); disp =(EditText)findViewById(R.id.editText2); b1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent data = new Intent(); data.setData(Uri.parse(display.getText().toString())); setResult(RESULT_OK, data); |
//我添加了以下部分,看看我是否可以使用Intent从// Splash活动中捕获多个值并将其返回到MainActivity。
1 2 3 4 5 6 7 8 9 10 11 12 | Intent dat = new Intent(); dat.setData(Uri.parse(disp.getText().toString())); setResult(RESULT_OK, dat); finish(); } }); } } |
你应该在结果意图中放置你需要的任何东西,然后从额外的东西中获取它们。
就这样做:
在Splash中:
1 2 3 4 5 6 7 8 9 10 11 12 |
并在MainActivity中:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | public void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == code) { if (resultCode == RESULT_OK) { // Toast.makeText(this, data.getData().toString(), //Toast.LENGTH_SHORT).show(); a = data.getStringExtra("n1"); num = Integer.parseInt(a); t.setText("" + num); c = data.StringExtra("n2"); num1 = Integer.parseInt(c); t.setText("" + num1); int total = num1 + num; } } } |
您可以访问第二个活动公共字段以更新值。