[英]How to refresh the activity which is not finished in android?
有什么辦法可以刷新或更新android中的活動? 例如:我有兩個活動Counter1和Counter2活動,這兩個活動中有一個文本視圖( tv_count )和兩個按鈕( bt_plus和bt_minus ),分別是加號和減號按鈕,當用戶單擊相應按鈕時count(textview value)將增加或減少, count從零開始,現在為count = 4 ,這里我將計數值保存在模型類中,在不完成第一個活動的情況下開始第二個活動。
button_next.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent=new Intent(getApplicationContext(), Counter2.class);
startActivity(intent);
}
});
現在,我導航到第二個活動,在這里我可以進一步將計數值從4增加到現在的count = 6。
button_back.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
finish();
}
});
當我點擊回到當前的活動會得到finish.But 計數的值保持應在C1的活動進行更新,以6相同的4個 。
根據沖浪,他們說要先完成第一項活動,然后再進行第二項活動。 但是我不想完成第一個活動,而是想對 onResume()或onRestart()和onPause()進行一些操作。
解決方案需求:更新第一個活動的計數值,而無需顯式完成和調用活動。
這個問題可能已經被問過了,但我想有人清楚地向我介紹一下。 這將非常有幫助,謝謝。
編輯 : 實際上,這只是一個值,單個textview實際上是我的要求。.我正在開發一個餐廳應用程序,該應用程序的列表視圖和可擴展列表視圖中的滑動選項卡中將有很多產品。 當用戶添加比薩餅時,當用戶在搜索視圖中搜索相同產品時,計數將增加。可以增加計數。.增加的計數在模型類中更新,但在滑動選項卡的列表視圖中未更新。
您可以在Counter2 Activity
編寫onActivityResult
方法,並將其值傳遞給Counter1 。
在您的Counter1中 :
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if(data.getExtras().containsKey("value")){
txtview.setText(data.getStringExtra("value"));
}
}
在您的Counter2中 :
i.putExtra("value", value);
setResult(RESULT_OK, i);
為了在活動之間發送數據,您應該通過startActivityForResult()
啟動一個新的活動
Intent i = new Intent(this, SecondActivity.class);
startActivityForResult(i, 1000);
如果要從SecondActivity發送回數據
button_back.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent returnIntent = new Intent();
returnIntent.putExtra("result", result);
setResult(RESULT_OK, returnIntent);
finish();
}
});
並在您的FirstActivity.class中
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1000) {
if(resultCode == Activity.RESULT_OK){
String result=data.getStringExtra("result");
// Update your view and model with the returned value
}
}
}
您可以將計數值從Counter1活動發送到Counter2活動。 在那里增加並保存在那里。 在完成第二個活動的同時,將更新的計數器值發送回Counter1活動。
您可以嘗試這樣的事情-
button_next.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent=new Intent(getApplicationContext(), Counter2.class);
intent.putExtra("CURRENT_COUNTER_VALUE", counter);
startActivity(intent);
}
});
在Counter2活動中,您可以像這樣檢索計數器值-
Bundle extras = getIntent().getExtras();
if (extras != null) {
String counter = extras.getIntExtra("CURRENT_COUNTER_VALUE",0);
}
然后在完成Counter2活動時-
button_back.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(getApplicationContext(), Counter1.class);
intent.putExtra("CURRENT_COUNTER_VALUE", counter);
startActivity(intent);
finish();
}
});
並以Counter1活動的onResume()方法檢索相同的方法。
希望能幫助到你。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.