1

私はこの関数を上書きしています:

    @Override
    public boolean onKeyUp(int keyCode, KeyEvent event)

しかし、どのインテントまたは画面に戻るボタンがユーザーを誘導しようとしているのかを知る方法はありますか?

4

3 に答える 3

2

現在のアクティビティを開始したインテントに情報を追加したほうがよいでしょう。

アクティビティA

    Intent lIntent = new Intent();
    lIntent.putExtra( EXTRAS_ACTIVITY_KEY, ACTIVITY_IDENTIFIER );
    startActivitiy...

アクティビティB

    public boolean onKeyUp(int keyCode, KeyEvent event){
           Intent lIntent = getIntent();
           if(lIntent.hasExtra(EXTRAS_ACTIVITY_KEY) &&
                   ACTIVITY_IDENTIFIER.equals(lIntent.getStringExtra(EXTRAS_ACTIVITY_KEY)){
                   // Great we know that it was a Activity A...
                   ... your code here....
           }
于 2012-04-27T03:47:44.017 に答える
2
List<CharSequence> theActivityTrace = getActivityTrace(null);

これは、スタック上にあるアクティビティトレースのリストを返す関数であり、上記のamd mActが現在のコンテキストであるため、以下のメソッドを呼び出すことができます。

public LinkedList<CharSequence> getActivityTrace(LinkedList<CharSequence> aTrace) {
    if (aTrace==null)
        aTrace = new LinkedList<CharSequence>();
    aTrace.add(mAct.getLocalClassName()+" ("+mAct.getTitle()+")");
    if (mAct.getCallingActivity()!=null)
        aTrace.add(mAct.getCallingActivity().toString()+" ("+mAct.getIntent().toString()+")");
    else if (mAct.getCallingPackage()!=null)
        aTrace.add(mAct.getCallingPackage().toString()+" ("+mAct.getIntent().toString()+")");

    return aTrace;
}
于 2012-04-27T04:40:16.567 に答える
1

ActivityManagerを使用してアクティビティスタックから取得できます。

于 2012-04-27T03:10:21.383 に答える