关于android上面的Activity跳转传送数据的问题,请高手来指教

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于android上面的Activity跳转传送数据的问题,请高手来指教相关的知识,希望对你有一定的参考价值。

显示出来, FirstActivity(有个跳转的按钮,我知道通过Bundle可以从FirstActivity像SecondActivity跳转并将数据 从FirstActivity传送到SecondActivity中并且用TextView',和一个TextView和一个EditText)和 SecondActivity(有个返回的按钮和一个TextView,和一个EditText)两个 Activity ,怎么把SecondActivity中的EditText数据 也 传送到FirstActivity中,但是我想知道在返回的 时候

参考技术A viewpager.setcurrentitem
表示切换当前的viewpager到指定界面,因为viewpager有缓存和回收机制,也就是说,默认情况下viewpager只会创建三个界面,因此跳过三个界面的时候,需要重新创建,所以导致空白。
解决方案就是:
viewpager.setoffscreenpagelimit(4);
表示四个界面来回切换不会重新创建,就会不出现空白了。
参考技术B 有两种办法,第一种是在第一个activity中使用startActivityForResult()来开始第二个activity
第二种是在第二个返回的时候同样开始一个新的activity1
及同样用bundle传送数据,用intent启用一个新的activity
1.

Android——关于Activity跳转的返回(无返回值和有返回值)——有返回值

技术分享

技术分享

技术分享

技术分享

 

说明:

跳转页面,并将第一页的Edittext输入的数据通过按钮Button传到第二页用Edittext显示,点击第二页的

返回按钮Button返回第一页(改变第二页的Edittext的内容会传至第一页的Edittext显示)

——有返回值的方式

1.给第一页面Edittext和Button设置id

2.设置Button的点击监听

(1)获取view实例,通过Edittext的id找到Edittext

(2)获取内容并转为文本形式

getText().toString()

(3)设置Intent(意图)告诉第二个页面,我要跳转了

Intent in = new Intent(this,excise2.class);

(4)在跳转的同时,通过Intent将输入的文本内容一并存储传过去

in.putExtra("myet",str);

(5)开始跳转 区别普通方式

startActivityForResult(in,1);

3.接受页面用Edittext接收

(1)给接受页面Edittext和Button设置id

(2)创建第二页面

public class excise2 extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.excise2);

(3)接收Intent意图 get

Intent in = getIntent();

(4)取存入的数据 get get

String str = in.getExtras().getString("myet");

(5)显示数据

操作View实例

EditText mytv= ( EditText)findViewById(R.id.jieshouzhi);

恢复输入框里面的内容(设置) set

mytv.setText(str);

4.设置按钮的点击监听

(1)存储返回数据 也要用Intent

EditText ett = (EditText)findViewById(R.id.jieshouzhi);

(2)设置返回数据

先设置ResultCode,再设置存储数据的意图

Intent in = new Intent();

setResult(RESULT_OK,in.putExtra("mytv",ett.getText().toString()));

(3)关闭

finishi();

5.在第一个页面接收返回的值

(1)重写回调方法

onActivityResult(int requestCode, int resultCode, Intent data)

(2)加判断条件

(3) 先获取返回的信息

String str = data.getExtras().getString("mytv");

(4)显示

EditText ett = (EditText)findViewById(R.id.ett);

5)传值 设置 set

ett.setText(str);

 

excise1.xml

 <EditText
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:textSize="40dp"
        android:id="@+id/ett"
        />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="传值至第三页"
        android:textSize="40dp"
        android:id="@+id/chuanzhi"
        android:layout_marginTop="100dp"
        android:onClick="clickcz"
        />

excise1.java

public void  clickcz(View view)
    {
        //Toast静态方法 直接用类名调用,不需要实例化
        //构建了Toast方法  实例方法调用  方法链
        Toast.makeText(this,"这是鼠标点击监听触发的",Toast.LENGTH_LONG).show();

        //取得要传递的信息
        //获取View实例
        EditText ett = (EditText)findViewById(R.id.ett);
        //获取内容
        String str = ett.getText().toString();
        //跳转用意图
        Intent in = new Intent(this,excise2.class);
        //存储内容 通过Intent
        //Extra 扩展 实际上是一个HashMap,进行限制 putExtra 是一个bundle
        in.putExtra("myet",str);
        //开始跳转 无返回值的写法
        //startActivity(in);

        //开始跳转 有返回值的写法
        //启动方式,有返回值
        //第一个参数 intent
        //第二个参数 requestCode 请求码
        startActivityForResult(in,1);

    }
        //处理返回信息的监听(回调方法)
        //监听所有返回信息的
       //必须要有requestCode区分由哪个请求返回的
      @Override
      protected void onActivityResult(int requestCode, int resultCode, Intent data) {
         super.onActivityResult(requestCode, resultCode, data);

          if(requestCode ==1)
              if(resultCode == RESULT_OK)
              {

                  //先获取返回的信息
               String str = data.getExtras().getString("mytv");
                  //显示
                  EditText ett = (EditText)findViewById(R.id.ett);
                  //传值 设置 set
                  ett.setText(str);
              }
          else
              {
                  Toast.makeText(this,"返回的内容有错误",Toast.LENGTH_LONG);
              }
       }

excise2.xml

<EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="excise2 第三页"
        android:textSize="40dp"
        android:id="@+id/jieshouzhi"
        />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="250px"
        android:text="带返回值得返回"
        android:textSize="40dp"
        android:id="@+id/clickec4"
        android:onClick="clickec4"/>

excise2.java

package com.example.chenshuai.excise;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;

/**
 * Created by chenshuai on 2016/3/20.
 */
public class excise2 extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.excise2);


        //接受信息

        //1.接受传递过来的意图
        Intent in = getIntent();
        //2.取数据
        String str = in.getExtras().getString("myet");
        //3.显示在哪里
        //操作View实例
        EditText mytv= (EditText)findViewById(R.id.jieshouzhi);
        //恢复输入框里面的内容(设置) set
        mytv.setText(str);


    }public void clickec4(View v)
    {
       //存储返回数据 也要用Intent
        EditText ett = (EditText)findViewById(R.id.jieshouzhi);

        //设置返回数据
        //先设置ResultCode,再设置存储数据的意图
        Intent in = new Intent();

        setResult(RESULT_OK,in.putExtra("mytv",ett.getText().toString()));

        finish();
    }



}

 

以上是关于关于android上面的Activity跳转传送数据的问题,请高手来指教的主要内容,如果未能解决你的问题,请参考以下文章

Android——关于Activity跳转的返回(无返回值和有返回值)——有返回值

Android——关于Activity跳转的返回(无返回值和有返回值)——无返回值

Android——关于Activity跳转的返回(无返回值和有返回值)——有返回值

Android成长之路——关于隐式Intent的用法

Android:铵手机上的返回键,照理来说是跳转到主页面的,但它有时却跳转到了登录页面,求救,我是菜鸟。

android 程序 如何从一个ACTIVITY跳转到另一个ACTIVITY,我的两个activity都在manifest上定义过的