我使用一个简单的意图来启动一个新活动,它会自动创建一个home / backbutton。当我按下此按钮时,它将返回到调用新活动的活动。当我按下此按钮时,此活动缺少信息,因为此按钮也是根据意图创建的。设备后退按钮可以正常工作。
所以它看起来像这个MainActivity> SearchResultActivity> InfoResultActivity
我可以使用SearchResultsActivity中的按钮返回MainActivity,因为它不需要onCreate中的信息。 SearchResultActivity需要来自MainActivity的信息。
MainActivity
button.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
// Perform action on click
String selectedVillage = villagesSpinner.getSelectedItem().toString();
String selectedTheme = themesSpinner.getSelectedItem().toString();
String selectedRestaurant = autocompletetextview.getText().toString();
Log.w("tag", "" + selectedVillage + " " + selectedTheme + " " + selectedRestaurant + " " + afhaalCheck.isChecked() + " " + bezorgCheck.isChecked() + " " + uitetenCheck.isChecked());
Intent myIntent = new Intent(MainActivity.this, SearchResultActivity.class);
for(int i = 0; i < allFeeds.size(); i++)
{
if(allFeeds.get(i).name.equals(selectedTheme))
{
myIntent.putExtra("THEME_SEARCH", allFeeds.get(i).idNumb);
}
}
myIntent.putExtra("VILLAGE_SEARCH", selectedVillage);
myIntent.putExtra("RESTAURANT_SEARCH", selectedRestaurant);
myIntent.putExtra("AFHAAL_CHECK", afhaalCheck.isChecked());
myIntent.putExtra("BEZORG_CHECK", bezorgCheck.isChecked());
myIntent.putExtra("UITETEN_CHECK", uitetenCheck.isChecked());
startActivity(myIntent);
}
});
这里我将信息发送到SearchResultActivity
SearchResultActivity
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_searchresult);
//Given values from search
village = getIntent().getExtras().getString("VILLAGE_SEARCH");
restaurant = getIntent().getExtras().getString("RESTAURANT_SEARCH");
theme = getIntent().getExtras().getInt("THEME_SEARCH");
afhaal = getIntent().getExtras().getBoolean("AFHAAL_CHECK");
bezorg = getIntent().getExtras().getBoolean("BEZORG_CHECK");
uiteten = getIntent().getExtras().getBoolean("UITETEN_CHECK");
....
....
....
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
Intent myIntent = new Intent(SearchResultActivity.this, InfoActivity.class);
myIntent.putExtra("RESTAURANT_CLICKED", displayData[position].name);
myIntent.putExtra("RESTAURANT_SEARCHED", restaurant);
myIntent.putExtra("THEME_SEARCH", theme);
myIntent.putExtra("VILLAGE_SEARCH", village);
myIntent.putExtra("AFHAAL_CHECK", afhaal);
myIntent.putExtra("BEZORG_CHECK", bezorg);
myIntent.putExtra("UITETEN_CHECK", uiteten);
startActivityForResult(myIntent,0);
}
});
.....
....
在这里,我将搜索信息和点击的listView项目的名称发送给InfoActivity,让它知道要显示的内容。
现在在InfoActivity中,我尝试使用finish()方法将内容发送回去,但它不适用于home / backbutton。问题是当我按下home / backbutton时没有调用finish()。
InfoActivity
@Override
public void finish()
{
// Prepare data intent
Intent myIntent = new Intent();
myIntent.putExtra("THEME_SEARCH", getIntent().getExtras().getString("THEME_SEARCH"));
myIntent.putExtra("VILLAGE_SEARCH", getIntent().getExtras().getString("VILLAGE_SEARCH"));
myIntent.putExtra("RESTAURANT_SEARCH", getIntent().getExtras().getString("RESTAURANT_SEARCH"));
myIntent.putExtra("AFHAAL_CHECK",getIntent().getExtras().getString("AFHAAL_CHECK") );
myIntent.putExtra("BEZORG_CHECK", getIntent().getExtras().getString("BEZORG_CHECK"));
myIntent.putExtra("UITETEN_CHECK",getIntent().getExtras().getString("UITETEN_CHECK") );
// Activity finished ok, return the data
setResult(RESULT_OK, myIntent);
super.finish();
}