我有两个观点和活动。 第一个是旋转器。在第二个,您可以创建新条目(存储在活动1中的微调器的数据库中)。 如果用户完成并按下后退按钮,我必须刷新活动1上的微调器(因为新条目)。
是否可以检查,如果应用返回到活动1,因为活动2中的后退按钮被按下了?
我知道,我可以使用onResume方法来实现它,但是这个方法被称为EVERYTIME我返回活动一,而不仅仅是因为后退按钮。
我只想在按下后退按钮时刷新微调器。
任何解决方案?我可以检查onResume方法中是否按下了后退按钮吗?
答案 0 :(得分:1)
您可以在第二个活动中覆盖onBackPressed()
。当用户按下后退按钮时,将调用此方法。
您可以在hasBackPressed = true
setResult()
传递
从活动1开始活动2:
Intent i = new Intent(this, SecondActivity.class);
startActivityForResult(i, 1);
从活动2传回信息:
@Override
public void onBackPressed() {
Intent returnIntent = new Intent();
returnIntent.putExtra("hasBackPressed",true);
setResult(Activity.RESULT_OK,returnIntent);
finish();
}
接收活动1中的数据:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1) {
if(resultCode == Activity.RESULT_OK){
boolean hasBackPressed = data.getBooleanExtra("hasBackPressed");
}
if (resultCode == Activity.RESULT_CANCELED) {
//Write your code if there's no result
}
}
}
答案 1 :(得分:1)
您可以使用startActivityForResult()
为结果启动活动2。在活动2上,您可以在添加新项目时将结果设置为RESULT_OK
。然后,在活动1的onActivityResult()
方法中,您可以检查返回的结果并在需要时更新您的数据。
答案 2 :(得分:1)
覆盖 $array = array(
'lists' => array(
'0' => array(
'id' => '23ybdwhdwbed',
'name' => 'TEST 1'
),
'1' => array(
'id' => 'e223edsewed',
'name' => 'TEST 2'
)
)
);
foreach ($array as $key => $value) {
for($ctr = 0; $ctr < count($value); $ctr++){
echo 'ID: ' . $value[$ctr]['id'] . '<br>';
echo 'Name: : ' . $value[$ctr]['name'] . '<br><br>';
}
}
方法并在此功能中执行操作。
onBackPressed()
答案 3 :(得分:0)
使用startActivityForResult()
开始第二项活动,并在第二项活动的onBackPressed()
中返回一些值。抓住onActivityResult()
中的那个,然后在那里刷新微调器。
查看this。