目录
Intent传递数据的基本使用
使用Intent来传递零零散散的数据
案例 从MainActivity传递到MainActivity2
MainActivity.java代码
package com.example.myintent.simple01; import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.os.Bundle; import android.view.View; import com.example.myintent.R; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void startAction(View view) { Intent intent = new Intent(this, MainActivity2.class); intent.putExtra("name","ljj"); intent.putExtra("sex","M"); startActivity(intent); } }
MainActivity2.java代码
package com.example.myintent.simple01; import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Toast; import com.example.myintent.R; public class MainActivity2 extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); Intent intent = getIntent(); String name = intent.getStringExtra("name"); char sex = intent.getCharExtra("sex", 'A'); Toast.makeText(this,name+sex,Toast.LENGTH_LONG).show(); } }
activity_main.xml布局文件
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".simple04.MainActivity"> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="跳转" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" android:onClick="startAction"/> </androidx.constraintlayout.widget.ConstraintLayout>
效果:在跳转至MainActivity2的时候会打印出传递的信息
Intent通过Bundle来传递信息
MainActivity.java代码
package com.example.myintent.simple02; import android.content.Intent; import android.os.Bundle; import android.view.View; import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; import com.example.myintent.R; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void startAction(View view) { Intent intent = new Intent(this,MainActivity2.class); // 封装包裹 Bundle 对象 Bundle bundle = new Bundle(); bundle.putString("name","ljj"); bundle.putChar("sex",'M'); // intent 携带我们的Bundle对象 intent.putExtras(bundle); startActivity(intent); } }
MainActivity2.java代码
package com.example.myintent.simple02; import android.content.Intent; import android.os.Bundle; import android.widget.Toast; import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; import com.example.myintent.R; public class MainActivity2 extends AppCompatActivity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); Intent intent = getIntent(); // 自动拆开 Bundle对象 String name = intent.getStringExtra("name"); char sex = intent.getCharExtra("sex", 'A'); Toast.makeText(this,name+sex,Toast.LENGTH_LONG).show(); } }
效果和上面是一样的
总结
一 intent传输基本使用(传递零零散散的数据) MainActivity 传输数据
Intent intent = new Intent(this, MainActivity2.class); intent.putExtra("name","ljj"); intent.putExtra("sex","M"); startActivity(intent);
MainActivity2 接收数据
Intent intent = getIntent(); String name = intent.getStringExtra("name"); // 第二个参数是默认值 如果没有获取到值的话就用使用第二个参数作为默认值 char sex = intent.getCharExtra("sex", 'A'); Toast.makeText(this,name+sex,Toast.LENGTH_LONG).show();
二 intent传输bundle(把零零散散的数据放在bundle对象里传过去)
MainActivity 传输数据
Intent intent = new Intent(this,MainActivity2.class); // 封装包裹 Bundle 对象 Bundle bundle = new Bundle(); bundle.putString("name","ljj"); bundle.putChar("sex",'M'); // intent 携带我们的Bundle对象 intent.putExtras(bundle); startActivity(intent);
MainActivity2 接收数据
Intent intent = getIntent(); // 自动拆开 Bundle对象 String name = intent.getStringExtra("name"); char sex = intent.getCharExtra("sex", 'A'); Toast.makeText(this,name+sex,Toast.LENGTH_LONG).show();