Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android不同activity之間共享數據解決方法

android不同activity之間共享數據解決方法

編輯:關於Android編程

最近做局域網socket連接問題,要在多個activity之間公用一個socket連接,就在網上搜了下資料,感覺還是application方法好用,帖出來分享下!
Android中在不同Activity中傳遞變量,通常使用Intent中Bundle添加變量的操作方法。
保存參數時:
復制代碼 代碼如下:
Intent intent = new Intent();
intent.setClass(A.this, B.class);
Bundle bundle = new Bundle();
bundle.putString("name", "xiaozhu");
intent.putExtras(bundle);
startActivity(intent);

讀取參數:
復制代碼 代碼如下:
Intent intent = this.getIntent();
Bundle bundle = intent.getExtras();
String name = bundle.getString("name");
[java] view plaincopy
Intent intent = this.getIntent();
Bundle bundle = intent.getExtras();
String name = bundle.getString("name");

不過在多個Activity中經常使用同一變量時,使用Bundle則比較麻煩,每次調用Activity都需要設置一次。
如想在整個應用中使用,在java中一般是使用靜態變量,而在android中有個更優雅的方式是使用Application context。
新建一個類,繼承自Application
復制代碼 代碼如下:
class MyApp extends Application {
private String myState;
public String getState() {
return myState;
}
public void setState(String s) {
myState = s;
}
}

在AndroidManifest.xml的application加個name屬性就可以了,如下面所示:
復制代碼 代碼如下:
<application android:name=".MyApp" android:icon="@drawable/icon" android:label="@string/app_name">

使用時:
復制代碼 代碼如下:
class Blah extends Activity {
@Override
public void onCreate(Bundle b){
...
MyApp appState = ((MyApp)getApplicationContext());
String state = appState.getState();
...
}
}
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved