2015-10-07 61 views
0

有什么办法刷新或更新android中的活动? 例如:我有两个活动两种活动C1的计数器2 activity.Here有一个文本视图(tv_count)和两个按钮(bt_plus和bt_minus),加和减按钮respectively.when上的相应按钮计数用户点击(TextView的值)将得到增加从零开始现在数= 4,在那里我的模型类保存的计数值&减少,计数,没有结束就开始第二个活动第一项活动。如何刷新android中未完成的活动?

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

     } 
    }); 

现在我导航到所述第二活动其中i可进一步从4提高值,现在计数= 6。

button_back.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      finish(); 

     } 
    }); 

当我点击回到当前的活动会得到finish.But的计数的值保持相同应在C1的活动更新为。

按照冲浪,他们说要在完成第一个活动之前进行第二个活动。 但我不想完成第一个活动而不是做一些操作onResume()或onRestart()和onPause()

解决方案需要:更新第一个活动的计数值而不完成并显式调用活动。

下面是推介链接: link1link2

这个问题可能已经问过,但我想有人清楚地介绍了我。 这将是非常有帮助,在此先感谢..

EDITED其实这只是一个单一的价值和单一的TextView其实我的要求是一些别的东西。我正在开发一个应用程序餐厅那里将列表视图中的许多产品以及处于滑动选项卡中的可扩展列表视图中。当用户添加披萨时,当用户在搜索视图中搜索同一产品时,计数会增加。可以增加计数。增加的计数在模型类中更新,但在滑动选项卡的列表视图中没有更新。

+0

我认为这里的问题可能是你在两个活动中实例化模型类,如果我没有错。是这样吗 ? –

+0

你说你在模型类中保存了值?你如何将值发送到Counter2活动?通常你可以通过参数发送值到另一个活动..但我不能在你的代码中看到..你的类是静态的吗? – Tarun

+0

这只是一个例子。我没有发布我实际的代码,这太杂乱了。我在这里用计数器简化了它,并且我没有在两者上都实例化。 –

回答

1

你可以写在C2的ActivityonActivityResult方法和值传递给C1的

在你C1的

@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")); 
    } 
    } 

在你C2的

i.putExtra("value", value); 
setResult(RESULT_OK, i); 
+0

您可以将您的计数传递给第一个活动并使用,无论您想要什么。或者您可以将计数保存在SharedPreferences中,并在需要时进行检索。这是最好的解决方案,因为它可以在任何地方进行访问和编辑 – Jas

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 
     } 
    } 
} 
0

您可以从C1的活动送价值的C2的活动。在那里增加并保存在那里。在完成第二个活动的同时,将更新后的计数器的值发送回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); 

     } 
}); 

C2的活动,您可以检索计数器值这样的 -

Bundle extras = getIntent().getExtras(); 
if (extras != null) { 
    String counter = extras.getIntExtra("CURRENT_COUNTER_VALUE",0); 

} 

然后同时完成C2的活动 -

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 activity的onResume()方法。

希望它有帮助。