当前位置: 代码迷 >> Android >> Android学习笔记(3)——使用静态变量传递数据
  详细解决方案

Android学习笔记(3)——使用静态变量传递数据

热度:39   发布时间:2016-04-28 06:17:04.0
Android学习笔记(三)——使用静态变量传递数据

1、使用Intent可以很方便地在不同的Activity间传递数据,这个也是官方推荐的方式,但是也有一定的局限性,就是Intent无法传递不能序列化的对象,然而这个问题可以用静态变量来解决~

2、下面来具体举个例子,新建一个Android工程,如下图:


3、在布局文件(“res/layout”)中添加按钮“Button”,代码如下:

    <Button        android:id="@+id/button"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:text="使用静态变量传递数据" />
4、在当前目录下再建一个布局文件“other.xml”,在其中添加一个“TextView”标签,代码如下:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical" >    <TextView        android:id="@+id/msg"        android:layout_width="fill_parent"        android:layout_height="fill_parent" >    </TextView></LinearLayout>
5、右击“src”下的包,新建类“OtherActivity”并使其继承“Activity”,在这个类中添加“onCreate”方法,并在其中添加成员“textview”、“name”、“age”,最后将其值设置给“textview”,代码如下:

package com.android.myintent;import android.app.Activity;import android.os.Bundle;import android.widget.TextView;public class OtherActivity extends Activity {	private TextView textview; // 添加一个静态变量	// 欲传递数据,添加一个public属性的静态变量	public static String name;	public static int age;	@Override	protected void onCreate(Bundle savedInstanceState) {		// TODO Auto-generated method stub		super.onCreate(savedInstanceState);		setContentView(R.layout.other);// 加载布局文件		textview = (TextView) this.findViewById(R.id.msg);// 查找并加载		textview.setText("-name-->>" + name + "\n" + "-age-->>" + age);	}	public OtherActivity() {		// TODO Auto-generated constructor stub	}}
6、在“Main.java”里添加一个“Button”类型成员,设置点击事件,并创建意图为OtherActivity中的静态变量赋值,代码如下:

package com.android.myintent;import android.os.Bundle;import android.app.Activity;import android.content.Intent;import android.view.Menu;import android.view.View;import android.widget.Button;public class Main extends Activity {	private Button button;	@Override	protected void onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		setContentView(R.layout.activity_main);		button = (Button) this.findViewById(R.id.button);		button.setOnClickListener(new View.OnClickListener() {			@Override			public void onClick(View v) {				// TODO Auto-generated method stub				// 声明一个意图				Intent intent = new Intent();// 可以构造一个空意图,在下面传递类				intent.setClass(Main.this, OtherActivity.class);				OtherActivity.age = 23;				OtherActivity.name = "Jack";				startActivity(intent);			}		});	}	@Override	public boolean onCreateOptionsMenu(Menu menu) {		// Inflate the menu; this adds items to the action bar if it is present.		getMenuInflater().inflate(R.menu.main, menu);		return true;	}}
7、在“AndroidManifest.xml”中添加一个“activity.xml”设置,“name”为“.OtherActivity”,使系统能找到该类,代码:

        <activity android:name=".OtherActivity" >        </activity>
8、运行程序,结果截图如下:



Ps:My second Android Application~

  相关解决方案