Android页面中数据的传递

来源:互联网 发布:试用中心 淘宝 编辑:程序博客网 时间:2024/05/12 02:59

1.     Android页面间数据传递方式(1)

使用Intent对象实现数据的传递。

Intent intent=new Intent();

           intent.setClass(ParentPage.this, ChildPage.class);

           intent.putExtra("id""this is a test");

             startActivity(intent);

 

2.     Android页面间数据传递方式(2)

通过Intent对象获取bundle,然后进行数据的传递。

Intent intent=new Intent();

           intent.setClass(ParentPage.this, ChildPage.class);

           Bundle bundle = new Bundle();

           bundle.putString("id""this is a test");

             intent.putExtras(bundle);

             startActivity(intent);

 

3.     Android页面间数据传递方式(3)

使用SharedPreferences对象实现数据的传递。

sharePreferences的理解:

SharedPreferences对象,这是在多个Activity(同一包中)共享数据的方式,本质上它就是一个可以在包的范围内进行数据共享的文件。

参考代码:

SharedPreferences per=getSharedPreferences("Text", 0);

              Editor editor=per.edit();

              editor.putString("text"txt.getText().toString());

 

4.     Android页面间实现返回的效果。


Android页面中数据的传递 - Paul - Its my life
 

这个在项目中是很常见的,解决这个问题就要了解activity的生命周期了。

(1)     Activity生命周期。

我们写了两个activity(FirstActivitySecondActivity)

FirstActivity代码:

package mars.activity04;

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

 

public class FirstActivity extends Activity {

    private Button myButton;

    public void onCreate(Bundle savedInstanceState) {

    System.out.println("FirstAcvity ---> onCreate");

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        myButton = (Button)findViewById(R.id.myButton);

        myButton.setText("启动第二个Activity");

        myButton.setOnClickListener(new ButtonOnClickListener());

    }

    protected void onDestroy() {

    System.out.println("FirstAcvity --->onDestory");

       super.onDestroy();

    }

    protected void onPause() {

    System.out.println("FirstAcvity --->onPause");

       super.onPause();

    }

    protected void onRestart() {

    System.out.println("FirstAcvity --->onRestart");

       super.onRestart();

    }

    protected void onResume() {

    System.out.println("FirstAcvity --->onResume");

       super.onResume();

    }

    protected void onStart() {

    System.out.println("FirstAcvity --->onStart");

       super.onStart();

    }

    protected void onStop() {

    System.out.println("FirstAcvity --->onStop");

       super.onStop();

    }

    class ButtonOnClickListener implements OnClickListener{

       public void onClick(View v) {

           Intent intent = new Intent();

           intent.setClass(FirstActivity.this,SecondActivity.class);

           FirstActivity.this.startActivity(intent);

       }

    }

}

SecondActivity代码:

package mars.activity04;

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

public class SecondActivity extends Activity {

    private Button secondButton;

    protected void onCreate(Bundle savedInstanceState) {

       System.out.println("SecondActivity--->onCreate");

       super.onCreate(savedInstanceState);

       setContentView(R.layout.second);

       secondButton = (Button)findViewById(R.id.secondButton);

       secondButton.setOnClickListener(new ButtonOnClickListener());

    }

    protected void onDestroy() {

       System.out.println("SecondActivity--->onDestory");

       super.onDestroy();

    }

   。。。。。。。不重复使用了。

    class ButtonOnClickListener implements OnClickListener{

       public void onClick(View v) {

           Intent intent = new Intent();

           intent.setClass(SecondActivity.this,FirstActivity.class);

           SecondActivity.this.startActivity(intent);

       }

    }

}

这两个activity重新写了onCreate()onDestroy()onPause()onRestart()onResume()onStart()onStop()方法,每个方法只打印了一句话。

在日志过滤器中我们可以看到这些方法执行的顺序:

 Android页面中数据的传递 - Paul - Its my life

对应的activity界面:

Android页面中数据的传递 - Paul - Its my life

接下来我们点击按钮:

日志文件:

Android页面中数据的传递 - Paul - Its my life

由此我们可以看出,activity的生命周期是:先调用onCreate()-----onStart()-----onResume(),当页面要跳转的时候,先执行onPause(),等到SecondActivityonCreate()-----onStart()------onResume()执行完毕后,FirstActivity才会执行onStop()方法。

SecondActivity页面。

Android页面中数据的传递 - Paul - Its my life

当我们点击按钮时log文件显示:

Android页面中数据的传递 - Paul - Its my life

调用的方法的顺序和上面有个地方不一样,由于栈内存中已经存在FristActivity了。这次调用的方法是onRestart()方法。

重点:虽然secondActivity执行了onStop()方法,但是并不知将这个activity重栈内存中删除了,知识不可见了。只有当执行了finish()方法,从栈内存中销毁掉。

5.     Android实现对象的传递。

实现对象的传递可以使用两种方法实现。

(1)     使用BundleputSerializable实现对象传递.

(2)     使用BundleputParacelable实现对象传递。

原创粉丝点击