Android多activity间数据的传送

来源:互联网 发布:au软件的功能 编辑:程序博客网 时间:2024/06/06 02:53

注意这个方法的使用前提:必须是activity间数据的传送

在此之前我常用的在Activity间传送数据的方式有:①文件存储(sq、sqlite等等),②单纯的Intent传参数,③Handler传参。现在又加了④Activity方法与Intent结合使用

①方法对于数据比较小的情况不实用
②方法与④方法用法上区别不大,④方法比较高大上点
③方法代码量相对较大


以一个实例说明,实例作用是在主页面中统计进入副页面的次数

过程:

①先看一下xml的效果:
activity_main.xml:
这里写图片描述
game.xml:
这里写图片描述

②MainActivity.java:

public class MainActivity extends Activity {    private TextView tv;    int count = 0;    int RequestCode = 101;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        tv = (TextView) findViewById(R.id.show_data);        tv.setText("打开副页面的次数为" + ":" + count);        Button startButton = (Button) findViewById(R.id.button1);        startButton.setOnClickListener(new OnClickListener() {            @Override            public void onClick(View arg0) {                // TODO Auto-generated method stub                startGame();            }        });    }    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        // TODO Auto-generated method stub        if (this.RequestCode == requestCode && resultCode == -1) {            // 注意if括号中的条件,返回true表示已经接收到另一个Activity的结果            count = data.getExtras().getInt("count");            tv.setText("打开副页面的次数为" + ":" + count);        }        super.onActivityResult(requestCode, resultCode, data);    }    private void startGame() {        // TODO Auto-generated method stub        Intent l = new Intent(MainActivity.this, PlayGame.class);        l.putExtra("count", count);        startActivityForResult(l, RequestCode);        // 发送请求,注意第二个参数    }}

③PlayGame.java

public class PlayGame extends Activity {    private TextView tv2;    int answer;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.game);        tv2 = (TextView) findViewById(R.id.textView1);        Intent i = getIntent();        answer = i.getIntExtra("count", -1);        answer++;        Button starBut = (Button) findViewById(R.id.button1);        starBut.setOnClickListener(new OnClickListener() {            @Override            public void onClick(View arg0) {                // TODO Auto-generated method stub                Intent i = getIntent();                i.putExtra("count", answer);                Log.e("answer", answer+"");                setResult(RESULT_OK, i);                // 发送结果,注意第一个参数                finish();            }        });    }}

MainActivity.java 发送带参数的Intent如同发送服务请求,有请求的编号和接收结果的编号,在注意下PlayGame.java中的结果编号,RESULT_OK为默认固定值 -1。

0 0
原创粉丝点击