主页/后退按钮意图因失去意图额外而导致错误

时间:2014-10-31 12:42:52

标签: android android-intent

我使用一个简单的意图来启动一个新活动,它会自动创建一个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();
}

0 个答案:

没有答案