[英]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.