2017-05-18 4 views
1

アンドロイドバックボタンと同様に機能し持っUpボタン私のアンドロイドアプリケーションは、次の活動の流れを持っている

リスト - >購入 - >項目がクリックされたときに/リストから を売るidがに買いに渡され、選択しましたサーバーから関連データを取り出します。ユーザーが特定のアイテムを所有している場合は、購入画面(このアイテムの概要を兼ねる)から販売オプションもあります。

私が直面している問題は、あなたが売り画面にいるときアンドロイドの戻るボタンを押すと元の状態で購入画面に戻りますが、アクティビティから戻る矢印(上)をクリックするとツールバーでは、実際に新しいアクティビティを起動しようとしているようで、そのアクティビティはIDが何であるかを知ることができないため、例外をスローします。購入アクティビティは、マニフェスト内の販売活動の親としてリストされます。

この特定のアクティビティの[戻る]ボタンと同じように動作するように、または少なくとも何らかの形でIDを戻す必要があります。

何か提案がありがとうございます。

答えて

1

昨日、私は自分のアプリのためにこれをしました。これは私がやったことです:

manifestファイルでは、私は私のDetailsActivityの一部だった

<meta-data 
       android:name="android.support.PARENT_ACTIVITY" 
       android:value="com.example.app.MainActivity" /> 

を削除しました。 DetailsActivity

私はこれらの行

if (item.getItemId() == android.R.id.home) { 
      onBackPressed(); 
     } 

ない、それはこれを処理するための最良の方法であるかどうかわからを追加onCreate

getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

onOptionsItemSelected()方法でこのラインを追加しましたが、まあ、それ作品:

+0

は私が私の問題を解決するための対応に時間を割いていただきありがとうございます。これは私が探していたものでした。 – Shaun

2

ActionBar(プラットフォームまたはAppCompatのいずれか)を使用している場合は、あなたが戻ってきたい活動。

@Override 
public boolean onOptionsItemSelected(@NonNull final MenuItem item) { 
    final int id = item.getItemId(); 
    if (id == android.R.id.home) { 
     onBackPressed(); 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 

これは、あなたのような単純なナビゲーション階層では安全に使用する必要があります。あなたの活動に

1

onOptionsItemSelected()方法idandroid.R.id.homeそしてちょうどfinish()現在の活動であれば、クリックした項目idを取得します。

はこれを試してみてください:

@Override 
public boolean onOptionsItemSelected(MenuItem item) 
{ 
    switch(item.getItemId()) 
    { 
    case android.R.id.home: 
     finish(); 
     return true; 

    default: 
     return super.onOptionsItemSelected(item); 

    } 
} 
関連する問題