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

时间:2015-10-07 05:21:57

标签: android android-activity counter onresume

有没有办法刷新或更新android中的活动? 例如:我有两项活动 Counter1 Counter2 活动。在这两项活动中有一个文字视图( tv_count < / strong>)和两个按钮( bt_plus和bt_minus ),分别为加号和减号按钮。当用户点击相应的按钮 count(textview value)时会增加&安培;减少,计数从零开始,现在 count = 4 ,我在模型类中保存计数值,在不完成第一个活动的情况下启动第二个活动。 / p>

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();

        }
    });

当我点击回来时,当前活动将完成。但计数的值保持不变 4 应该更新为 6 Counter1 活动。

根据冲浪,他们说在完成第二项活动之前完成第一项活动。 但我不想完成第一项活动 而是做一些操作 onResume()或onRestart()和onPause()

解决方案需求:更新第一个活动的计数值,而不必完成并明确调用活动。

以下是推介链接: link1 link2

这个问题可能已被提出,但我希望有人向我简要介绍一下。 这将非常有帮助,在此先感谢..

已编辑 实际上这只是一个单一的值和单个textview实际上我的要求是其他的东西..我正在开发一个餐厅应用程序,其中会有很多产品在列表视图和可展开列表视图中,它位于滑动选项卡中。当用户添加披萨时,当用户在搜索视图中搜索相同的产品时,计数会增加,计数可以增加..增加的计数在模型类中更新,但在滑动标签的列表视图中没有得到更新。

3 个答案:

答案 0 :(得分:1)

您可以在 Counter2 onActivityResult中编写Activity方法,并将值传递给 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);

答案 1 :(得分:0)

要在活动之间发送数据,您应该通过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 
        }
    }
}

答案 2 :(得分:0)

您可以将计数器活动中的计数值发送到 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()方法中检索相同的方式。

希望它有所帮助。