Andorid 跳转

首先用一张图来展示:

s

  1. 页面A携带参数到页面B

     a、创建两个布局文件和两个对应的activity

     b、拿到页面A的输入文本框

     c、添加发表说说的事件,获取intent对象,将需要携带的数据封装进intent对象,然后跳转到页面B

     d、在页面b通过getintent方法获取intent对象,通过intent对象获取传递过来的值。

     e、同理拿到页面B的输入框

     f、添加确定的事件,获取intent对象(携带参数),将需要携带的数据封装进intent对象,然后跳转到页面A

 

    缺陷:当页面B跳转回页面A的时候,先前携带的参数会丢失。

      2    页面A携带参数带有目的性跳转到页面B,为了从页面B拿数据回页面A

    a、创建两个布局文件和两个对应的activity

    b、拿到页面A的输入文本框

    c、添加发表说说的事件,获取intent对象,将需要携带的数据封装进intent对象,然后带目的跳转到页面B

    d、在页面b通过getintent方法获取intent对象,通过intent对象获取传递过来的值。

    e、同理拿到页面B的输入框

    f、添加确定的事件,获取intent对象(不携带参数),将需要携带的数据封装进intent对象,设置结果,干掉自己,将之前         的activity暴露出来。

    g、重写onActivityResult方法处理返回的数据。

下面请看代码

第一个Activity页面 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
    android:orientation="vertical"
    tools:context=".MainActivity">

   <EditText
       android:layout_width="match_parent"
       android:hint="发表人:"
       android:id="@+id/et_main_uname"
       android:layout_height="wrap_content" />
<TextView
    android:layout_width="match_parent"
    android:lines="10"
    android:id="@+id/tv_main_conter"
    android:layout_height="wrap_content" />

    <Button
        android:layout_width="match_parent"
        android:text="我要发表说说"
        android:id="@+id/bt1_main_show"
        android:onClick="show"
        android:layout_height="wrap_content" />
</LinearLayout>




package com.example.myapplication;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

private EditText et_main_uname;

private TextView tv_main_conter;

private Button bt1_main_show;
    //在Activity创建时就调用
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //初始化控件
        setContentView(R.layout.activity_main);
        et_main_uname = findViewById(R.id.et_main_uname);
        tv_main_conter = findViewById(R.id.tv_main_conter);
    }

    /**
     * 我要发表说说按钮
     * @param view
     */
    public void show(View view) {
        //意图
        Intent intent = new Intent(this,Main2Activity.class);
        String uname = et_main_uname.getText().toString();
        intent.putExtra("uname",uname);
        //去某一个页面拿值得时候 再回到本页面时用
        startActivityForResult(intent,0x100);
    }


    /**
     * 接收传过来的参数   回调
     * @param requestCode
     * @param resultCode
     * @param data
     */
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        tv_main_conter.setText(data.getStringExtra("s"));
    }
}


第二个Activity页面

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
    android:orientation="vertical"
    tools:context=".Main2Activity">

    <TextView
        android:layout_width="match_parent"
        android:id="@+id/tv2_main_uname"
        android:layout_height="wrap_content" />

    <EditText
        android:layout_width="match_parent"
        android:lines="10"
        android:hint="发表说说"
        android:id="@+id/et2_main_conter"
        android:layout_height="wrap_content" />

    <Button
        android:layout_width="match_parent"
        android:id="@+id/bt2_main_ok"
        android:text="确定"
        android:onClick="ok"
        android:layout_height="wrap_content" />
</LinearLayout>
package com.example.myapplication;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class Main2Activity extends AppCompatActivity {

    private EditText et2_main_conter;
    private TextView tv2_main_uname;
    private Button bt2_main_ok;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        //初始化控件
        et2_main_conter = findViewById(R.id.et2_main_conter);
        tv2_main_uname = findViewById(R.id.tv2_main_uname);
        bt2_main_ok = findViewById(R.id.bt2_main_ok);
        String uname = getIntent().getStringExtra("uname");
        tv2_main_uname.setText(uname);
    }

    /**
     * 确定发表说说按钮
     * @param view
     */
    public void ok(View view) {
        String s = et2_main_conter.getText().toString();
        Intent Intent = new Intent(this,MainActivity.class);
        Intent.putExtra("s",s);
        //设置返回码
        setResult(0x200,Intent);
        //刷新
        finish();
    }
}

 接下来是结果演示

         1):第一个页面点我呀发表说说跳转到第二个页面  顺便把发表人的名字带过去

2

    2):第二个页面  把第一个页面的值带过来  你可在编辑框内输入内容  当你点确定时 又跳到第一个页面去 且把值页带过去

1

     3):  发表成功之后  跳转到第一个页面  且把发表的内容也带了过来

3

哈哈哈   希望有用 

猜你喜欢

转载自blog.csdn.net/qq_42471842/article/details/83476470