androidactivity數據
㈠ 如何android多Activity間共享數據
方法1:在某個Activity中聲明一個公共的static變數把共享數據作為靜態變數
1
2
3
4
5
6
7
8
9
10
public class OneActivity extends Activity {
public static Data data = null;//聲明的變數
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
data = new Data();
}
}
1
2
3
4
5
6
7
public class TwoActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Data data = OneActivity.data;
}
但是這樣會增加activity之間的耦合度,不是很好
方法二:把共享數據作為放在Applicaiton中
定義一個MyApplication繼承於Application
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class MyApplication extends Application{
private Data data;
@Override
public void onCreate() {
super.onCreate();
data = new Data();
}
public Data getData(){
return data;
}
public void setData(Data data){
this.data = data;
}
}
將MyApplication配置到清單文件中作為程序啟動的ApplicationContext
設置Application的name屬性即可
在Activity中獲取數據
1
2
3
4
5
6
7
8
9
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MyApplication application = (MyApplication) getApplication();
Data data = application.getData();
}
}
㈡ 如何android多Activity間共享數據
方法1:在某個Activity中聲明一個公共的static變數把共享數據作為靜態變數
java">{
publicstaticDatadata=null;//聲明的變數
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
data=newData();
}
}
{
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Datadata=OneActivity.data;
}
但是這樣會增加activity之間的耦合度,不是很好
方法二:把共享數據作為放在Applicaiton中
定義一個MyApplication繼承於Application
{
privateDatadata;
@Override
publicvoidonCreate(){
super.onCreate();
data=newData();
}
publicDatagetData(){
returndata;
}
publicvoidsetData(Datadata){
this.data=data;
}
}
將MyApplication配置到清單文件中作為程序啟動的ApplicationContext
設置Application的name屬性即可
在Activity中獲取數據
{
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MyApplicationapplication=(MyApplication)getApplication();
Datadata=application.getData();
}
}
㈢ android activity之間怎麼傳對象數據
StartActivity的時候將數據攜帶到Intent的bundle里,如果要攜帶自定義的對象,你自定義的對象要實現Serializable介面,就是在類里加一個implement Serializable。
然後
Intent intent = new Intent(this, Activity2);
Bundle bundle = new Bundle();
bundle.putSerializable("參數名", 自定義對象);
intent.putExtras(bundle);
startActivity(intent);
就可以把參數帶過去了,
取的時候用
getIntent().getSerializableExtra("參數名")
就可以取到你傳過來的對象了
強轉一下類型就能用了
㈣ 如何在Android開發中activity之間數據傳遞
android各組件之間可以使用Intent來傳遞數據, 這里以ActivityA向ActivityB傳遞數據為例
Intentintent=newIntent(context,ActivityB.class);
//如果context上下文不是Activity的話,需要添加下面這個flag,
if(!(contextinstanceofActivity)){
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
}
//添加要傳遞的數據
//這里的key到時候ActivityB會用來得到value
//android要求可以傳遞的數據類型包括基本數據類型,
//基本數據類型的數組,CharSequence,以及實現了Parcelable的對象
//putExtra是重載方法,根據value的類型會適當的打包進intent的Bundle對象里
intent.putExtra(key,value);
//或則將數據打包進Bundledata里,然後intent.putExtras(data);
context.startActivity(intent);
在ActivityB中
publicvoidonCreate(BundlesavedInstanceState){
//得到傳遞過來的數據
Bundlebundle=getIntent().getExtras();
//通過getXXX方法來獲取key對應的value
bundle.getXXX(key);
}
㈤ Android開發中 Activity中數據、狀態的保存
1.若是向資料庫中插入數據,保存持久化數據的操作時應放在onpause()中.
protected
void
onpause(){…..
}
2.若保存ui控制項的狀態,
成員變數的值等應放在onsaveinstancestate()中
protected
void
onsaveinstancestate(bundle
outstate)
{....
}