Android开发Android开发经验谈Android技术知识

Activity数据传递详解

2017-11-12  本文已影响71人  一本未写完的书
唉,好久都没有写过博客了。真的是太懒了。最近在看《Android权威编程指南》,挺不错的一本书,感觉里面有很多开发规范,是很值得一看的一本书。
Intent intent=SetActivity.newIntent(StartActivity.this,true);
startActivityForResult(intent,REQUEST_CODE_CHAT);
 Intent data=new Intent();
 data.putExtra(EXTRA_SHOW,isAnswerShown);
 //这里可以设置也可以不用设置。要看具体的返回值
 setResult(RESULT_OK,data);
 @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//        super.onActivityResult(requestCode, resultCode, data);
        if(resultCode != Activity.RESULT_OK){
            return;
        }
        //如果只有一个Activity跳转的话,这个判断可以不用写
        if(REQUEST_CODE_CHAT == requestCode){
        if(data==null) return;
            isTure=SetActivity.wasAnswerShown(data);
            Toast.makeText(this,"回来的结果"+isTure,Toast.LENGTH_SHORT).show();
        }

    }

第一个Activity,就是我说的Activity1

package zhan.com.typeview.simaple.intent;

import android.app.Activity;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;

import zhan.com.typeview.R;

/**
 * @date 创建时间: 2017/11/12 0012 16:25
 * @author zh_legend
 * @Description 跳过去的Activity
 * @Email code_legend@163.com
 * @Version 1.0
 */
public class StartActivity extends AppCompatActivity {

    //响应码
    private  static  final int REQUEST_CODE_CHAT=0;
    //得到的返回值
    private boolean isTure;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_start);
    }
    public void jump(View v){
        Intent intent=SetActivity.newIntent(StartActivity.this,true);
        startActivityForResult(intent,REQUEST_CODE_CHAT);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//        super.onActivityResult(requestCode, resultCode, data);
        if(resultCode != Activity.RESULT_OK){
            return;
        }
        //如果只有一个Activity跳转的话,这个判断可以不用写
        if(REQUEST_CODE_CHAT == requestCode){
            if(data==null) return;
            isTure=SetActivity.wasAnswerShown(data);
            Toast.makeText(this,"回来的结果"+isTure,Toast.LENGTH_SHORT).show();
        }

    }
}

第二个Activity,就是我说的Activity2

package zhan.com.typeview.simaple.intent;

import android.content.Context;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Toast;

import zhan.com.typeview.R;

import static android.icu.lang.UCharacter.GraphemeClusterBreak.T;
/**
 * @date 创建时间: 2017/11/12 0012 16:24
 * @author zh_legend
 * @Description  返回过去的
 * @Email code_legend@163.com
 * @Version 1.0
 */
public class SetActivity extends AppCompatActivity {

    //返回的结果
    private static final String EXTRA_IS_TRUE="zhan.com.typeview.simaple.intent.is_true";

    private static final String EXTRA_SHOW="zhan.com.typeview.simaple.intent.show";

    //跳转得到的结果
    private boolean isAnsTrue;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_set);
        Intent intent = getIntent();
        isAnsTrue=intent.getBooleanExtra(EXTRA_IS_TRUE,false);
        Toast.makeText(this,"跳转过来的结果"+isAnsTrue,Toast.LENGTH_SHORT).show();
        setAnswerShowResult(false);
    }

    public static Intent newIntent(Context packageContext,boolean answerIsTrue){
        Intent intent=new Intent(packageContext,SetActivity.class);
        intent.putExtra(EXTRA_IS_TRUE,answerIsTrue);
        return intent;
    }

    public static boolean wasAnswerShown(Intent result){
        return result.getBooleanExtra(EXTRA_SHOW,false);
    }

    private void setAnswerShowResult(boolean isAnswerShown){
        Intent data=new Intent();
        data.putExtra(EXTRA_SHOW,isAnswerShown);
        //这里可以设置也可以不用设置。要看具体的返回值
        setResult(RESULT_OK,data);
    }


}

好了,就这样吧。

上一篇 下一篇

猜你喜欢

热点阅读