intent,实现两个活动之间数据的传递
一、Intent 可以启动一个活动,也可以在启动活动的时候传递数据。intent中提供了putExtra()方法,它可以把我们想要传递的数据暂存在intent中,启动了另一个活动后,通过getIntent().getStringExtra()、(或者getIntent().getIntExtra()通过活动传递的数据类型决定),再从 Intent中取出。
二、如果需要返回数据给上一个活动,则不在用startActivity()方法启动活动,而是通过startActivityForResult()方法来启动活动,这个方法是期望在活动销毁的时候能够返回一个结果给上一个活动。并且需要通过onActivityResult()方法来得到返回的数据。
三、本次要演示的代码为,通过点击activity_main.xml中的按钮传递数据,给act2.xml中的textView。然后,通过点击act2.xml的按钮返回一个数据给acitvity.main中的textView。
activity_main.xml:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:id="@+id/tv_back" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="mainActivity界面"/> <Button android:id="@+id/btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="跳转"/> </LinearLayout>
act2.xml:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="act2界面"/> <Button android:id="@+id/btn_back" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="返回mainActivity"/> </LinearLayout>
MainActivity.java
public class MainActivity extends AppCompatActivity { private Button mIntentButton; private TextView mTvBack; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mTvBack = (TextView) findViewById(R.id.tv_back); mIntentButton = (Button) findViewById(R.id.btn); mIntentButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(MainActivity.this,Act2.class); //使用putExtra()方法传递数据 intent.putExtra("name","从mainActivity传过来的数据"); //由于需要返回数据,使用 startActivityForResult()方法 startActivityForResult(intent,1); } }); } //此方法是用来接收返回的数据 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if(requestCode == 1){ if(resultCode == RESULT_OK){ String st = data.getStringExtra("back"); mTvBack.setText(st); } } } }
Act2.java:
public class Act2 extends AppCompatActivity{ private TextView mTv; private Button mBtnBack; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.act2); //接收intent数据 String var = getIntent().getStringExtra("name"); mTv = (TextView) findViewById(R.id.tv); mTv.setText(var); mBtnBack = (Button) findViewById(R.id.btn_back); mBtnBack.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(); intent.putExtra("back","返回到mainactivity"); setResult(RESULT_OK,intent); finish(); } }); } }
来自个人博客:intent,实现两个活动之间数据的传递
                    
                
                
            
        
浙公网安备 33010602011771号