在android中如果需要达到点击然后跳转到下一个页面并且收集到该页面的数据返回则需要采用数据回传方式。startActivityForResult(Intent intent,int requestCode,data)
第二个参数是请求码,用来判断数据的来源,输入一个唯一的数值即可。下面试一个简单是例子:
twoActivity
package com.example.activity;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class twoActivity extends AppCompatActivity {
private EditText ipt,ipt2;
private Button reast;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate( savedInstanceState );
setContentView( R.layout.activity_two );
ipt = (EditText)findViewById( R.id.ipt );
ipt2 = (EditText)findViewById( R.id.ipt2 );
reast = (Button) findViewById( R.id.reast );
reast.setOnClickListener( new View.OnClickListener() {
@Override
public void onClick(View view) {
String name = ipt.getText().toString().trim();
String password = ipt2.getText().toString().trim();
Intent intent = new Intent( twoActivity.this,MainActivity.class );
intent.putExtra( "name",name );
intent.putExtra( "password",password );
setResult( 1,intent );
finish();
}
} );
}
}
activity_two
<?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"
>
<EditText
android:id="@+id/ipt"
android:layout_width="match_parent"
android:layout_height="50dp"
android:hint="请输入你的名字"
/>
<EditText
android:id="@+id/ipt2"
android:layout_width="match_parent"
android:layout_height="50dp"
android:hint="请输入你的密码"
/>
<Button
android:id="@+id/reast"
android:layout_width="match_parent"
android:layout_height="50dp"
android:text="提交"/>
</LinearLayout>
MainActivity
package com.example.activity;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
private Button go_run;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate( savedInstanceState );
setContentView( R.layout.activity_main );
go_run = (Button)findViewById( R.id.go_run );
go_run.setOnClickListener( new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent =new Intent( MainActivity.this,twoActivity.class );
startActivityForResult( intent,1 );
}
} );
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult( requestCode, resultCode, data );
String name = data.getStringExtra( "name" );
String password = data.getStringExtra( "password" );
Toast.makeText( MainActivity.this,"账号是"+name+"密码是"+password,Toast.LENGTH_SHORT ).show();
}
}
Activity_main
<?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/txt"
android:layout_width="match_parent"
android:layout_height="50dp"/>
<Button
android:id="@+id/go_run"
android:layout_width="match_parent"
android:layout_height="50dp"
android:text="获取数据"
/>
</LinearLayout>
这里要注意传输的数据是在跳转页声明的
String password = ipt2.getText().toString().trim();
Intent intent = new Intent( twoActivity.this,MainActivity.class );
intent.putExtra( "name",name );
intent.putExtra( "password",password );
setResult( 1,intent );
finish();
接收是在开始的刚开始跳转的界面声明的并且还得重写方法
@Override
public void onClick(View view) {
Intent intent =new Intent( MainActivity.this,twoActivity.class );
startActivityForResult( intent,1 );
}
} );
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult( requestCode, resultCode, data );
String name = data.getStringExtra( "name" );
String password = data.getStringExtra( "password" );
Toast.makeText( MainActivity.this,"账号是"+name+"密码是"+password,Toast.LENGTH_SHORT ).show();