2015年5月16日 星期六

Android使用全局變量傳遞數據

原文: http://www.cnblogs.com/xiaochao1234/p/4045632.html


ndroid中Application是用來保存全局變量的,在package創建的時候就存在了,

到所有的activity都被destroy掉之後才會被釋放掉。所以當我們需要全局變量的時候只要在

application中去實現,通過調用Context的getApplicationContext或者Activity的getApplication方

法來獲得一個Application對象,就可以設置或讀取全局變量的值。

啟動Application時,系統會創建一個PID,即進程ID,所有的Activity就會在此進程上運行。

那麽我們在Application創建的時候初始化全局變量,同一個應用的所有Activity都可以取到這

些全局變量的值,換句話說,我們在某一個Activity中改變了這些全局變量的值,那麽在同一

個應用的其他Activity中值就會改變。

實例演試:如果把輸入裏的內容設置為全局變量,那麽有下面兩種情況。




具體實現方法如下:

一. 新建共享的全局變量

新建一個共享變量的類WirelessApp,需要繼承Application

Java代碼 

package com.wirelessqa.testintent; 

import android.app.Application;
/**

* 繼承application,設置全局變量

* @author bixiaopeng 2013-2-18 上午11:32:19

*/

public class WirelessApp extends Application {

private String username;


public String getUsername() {
returnusername;
}


public void setUsername(String username) {
this.username = username;
}


}


二.配置AndroidMainifest.xml


AndroidMainifest.xml中聲明一下全局變量的類,這時Android就會建立一個全局可用的實例

Application屬性中設置android:name=".WirelessApp"



三.調用全局變量

可以在其它任何地方使用Content.getApplicationConext()來獲取這個實例,再來獲取全局變量


Java代碼

package com.wirelessqa.testintent;

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;
import android.widget.EditText; 
 
public class MainActivity extends Activity { 
 
private EditText edit = null; 
 
private Button button = null; 
 
@Override 
 
protected void onCreate(Bundle savedInstanceState) { 
 
super.onCreate(savedInstanceState); 
 
setContentView(R.layout.activity_main); 
 
edit = (EditText)findViewById(R.id.edit); 
 
button = (Button)findViewById(R.id.btn_submit); 
 
button.setOnClickListener(new OnClickListener() {

@Override 
 
public void onClick(View v) { 
 
String result = edit.getText().toString(); 
 
//獲得應用程序實例
WirelessApp app = (WirelessApp)getApplicationContext(); 
 
//給全局變量賦值
app.setUsername(result); 
 
//啟動另一個activity
Intent intent = new Intent(MainActivity.this, ResultActivity.class);
startActivity(intent);
 
}); 
 
 
}


四.調用全局變量的值

Java代碼
package com.wirelessqa.testintent;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

/**
* 顯示結果的Activity
*
* @author bixiaopeng 2013-2-18 上午11:29:50
*/
public class ResultActivity extends Activity {

private TextView text = null;

@Override 
 
protected void onCreate(Bundle savedInstanceState) { 
 
super.onCreate(savedInstanceState); 
 
setContentView(R.layout.activity_result); 
 
//獲得應用程序實例
WirelessApp app = (WirelessApp) getApplicationContext(); 
 
String result = app.getUsername();//取值 
 
text = (TextView) findViewById(R.id.txt_result); 
 
text.setText(result); 
 
}

}