zoukankan      html  css  js  c++  java
  • AndroidstartActivityForResult的详细用法(摘抄)

    在启动另外一个Activity的时候,使用startActivityForResult 的带参数跳转。

    startActivityForResult的主要作用就是它可以回传数据,假设我们有两个页面,首先进入第一个页面,里面有一个按钮,用于进入下一个页面,当进入下一个页面时,进行设置操作,并在其finish()动作或者back动作后,将设置的值回传给第一个页面,从而第一个页面来显示所得到的值。这个有一点像回调方法,就是在第二个页面finish()动作或者back动作后,会回调第一个页面的onActivityResult()方法,所以我们可以重写一下这个方法。直接看代码吧:
    第一个页面代码

    java 代码:第一和activity

    package com.example.lamar.test01;

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

    public class MainActivity extends Activity implements View.OnClickListener {

    private TextView mText01;
    private TextView mText02;
    private Button button01;
    private Button button02;
    private Intent mIntent;
    private int requestCode;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mText01 = (TextView) findViewById(R.id.mText01);
    mText02 = (TextView) findViewById(R.id.mText02);
    button01 = (Button) findViewById(R.id.mButton01);
    button02 = (Button) findViewById(R.id.mButton02);
    button01.setOnClickListener(this);
    button02.setOnClickListener(this);
    mText01.setText("01");
    mText02.setText("02");

    mIntent=new Intent();
    mIntent.setClass(MainActivity.this,Activity02.class);
    }

    @Override
    public void onClick(View v) {
    switch (v.getId()) {
    case R.id.mButton01:
    // 请求码的值随便设置,但必须>=0
    requestCode = 0;
    startActivityForResult(new Intent(MainActivity.this,Activity02.class), requestCode);
    break;
    case R.id.mButton02:
    requestCode = 2;
    startActivityForResult(mIntent, requestCode);
    break;
    default:
    break;
    }
    }
    // 回调方法,从第二个页面回来的时候会执行这个方法
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    String change01 = data.getStringExtra("change01");
    String change02 = data.getStringExtra("change02");
    // 根据上面发送过去的请求吗来区别
    switch (requestCode) {
    case 0:
    mText01.setText(change01);
    break;
    case 2:
    mText02.setText(change02);
    break;
    default:
    break;
    }
    }
    }

    对应的 :layout
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <TextView
    android:id="@+id/mText01"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    />
    <TextView
    android:id="@+id/mText02"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    />
    <Button
    android:id="@+id/mButton01"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="改变第一行文本的值"
    />
    <Button
    android:id="@+id/mButton02"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="改变第二行文本的值"
    />
    </LinearLayout>

    第二个active
    package com.example.lamar.test01;

    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;

    public class Activity02 extends Activity {

    private int resultCode = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_02);

    Intent mIntent = new Intent();
    mIntent.putExtra("change01", "1000");
    mIntent.putExtra("change02", "2000");
    // 设置结果,并进行传送
    this.setResult(resultCode, mIntent);
    // this.finish();

    }
    }

    对应的layout:
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="文本的值已经改变"
    />
    </LinearLayout>
  • 相关阅读:
    How to convert VirtualBox vdi to KVM qcow2
    (OK)(OK) adb -s emulator-5554 shell
    (OK)(OK) using adb with a NAT'ed VM
    (OK) How to access a NAT guest from host with VirtualBox
    (OK) Creating manually one VMs from an existing VDI file in CLI (VBoxManage) in Fedora 23
    (OK)(OK) Creating VMs from an existing VDI file in CLI (VBoxManage) in Fedora 23
    (OK) Creating_VMs_from_an_existing_VDI_file.txt
    (OK) Creating VMs from an existing VDI file —— in OS X
    (OK) install_IBM_SERVER.txt
    (OK) install chrome & busybox in android-x86_64 —— uninstall chrome
  • 原文地址:https://www.cnblogs.com/weiyuanquyu/p/8342602.html
Copyright © 2011-2022 走看看