簡體   English   中英

如何刷新未在android中完成的活動?

[英]How to refresh the activity which is not finished in android?

有什么辦法可以刷新或更新android中的活動? 例如:我有兩個活動Counter1Counter2活動,這兩個活動中有一個文本視圖( 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()進行一些操作。

解決方案需求:更新第一個活動的計數值,而無需顯式完成和調用活動。

以下是引薦鏈接: link1 link2

這個問題可能已經被問過了,但我想有人清楚地向我介紹一下。 這將非常有幫助,謝謝。

編輯實際上,這只是一個值,單個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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM