5

フラグメントでホームボタンを有効にしたい。この質問は以前に尋ねられましたが、活動のためです。
私は試した ...

 getSupportActionBar().setDisplayHomeAsUpEnabled(true);

...しかし、これは機能しません。
これが私のコードです:

import com.actionbarsherlock.R;
import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.app.ActionBar.Tab;
import com.actionbarsherlock.app.SherlockFragment;
import com.actionbarsherlock.view.MenuItem;

import android.support.v4.app.Fragment;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;

public class SafanTab extends SherlockFragment {

    @Override
    public View onCreateView(LayoutInflater inflater,
                             ViewGroup container,
                             Bundle savedInstanceState) {
        return inflater.inflate(R.layout.safantab, container, false);
    }

    public OnClickListener onOverClick = new OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent myIntent = new Intent(view.getContext(), Over_Safan.class);
            startActivityForResult(myIntent, 0);
        }
    };

    public OnClickListener onProductenClick = new OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent myIntent = new Intent(view.getContext(), Over_Safan.class);
            startActivityForResult(myIntent, 0);
        }
    };

    public OnClickListener onTwitterClick = new OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent myIntent = new Intent(view.getContext(), Over_Safan.class);
            startActivityForResult(myIntent, 0);
        }
    };

}

SherlockFragmentのホームボタンを有効にするにはどうすればよいですか?

4

3 に答える 3

25

オプションメニューの選択を上書きする必要もあります。

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

上記のコードはアクティビティで実行されることに注意してください(したがってfinish())。(私には奇妙なことですが...)を使用しない場合はActivity、それを置き換える必要があります。

于 2012-07-23T17:35:11.733 に答える
13

以下のコードをメインのアクティビティに追加してみましたextends SherlockActivityextends SherlockFragmentActivity

ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);

私はあなたがgetSupportActionBarそれだけでできるとは思わないextends SherlockFragment

于 2012-07-23T17:39:09.417 に答える
0

最も簡単な解決策は、次の3つの簡単な手順に従うことです。

AndroidManifest1-アクティビティの親であるを宣言します。

<activity android:theme="@style/Theme.MyApp"
            android:name="com.example.CurrentActivity" 
            android:parentActivityName="com.example.MainActivity" >
        <!-- Parent activity meta-data to support 4.0 and lower -->
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="com.example.ParentActivity" />

onCreate2-アクションバーに上アイコンを追加します。メソッドから呼び出すだけです。

getSupportActionBar().setDisplayHomeAsUpEnabled(true);

3-ユーザーが上ボタンを押したときに開くアクティビティを指定します。

 @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        if (item.getItemId() == android.R.id.home) {
            NavUtils.navigateUpFromSameTask(this);
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

注: (@ Ericが提案したように)電話をかける場合:

finish();

それ以外の:

NavUtils.navigateUpFromSameTask(this);

ドキュメントに記載されているように、実際には「アップナビゲーション」を実行していません。

アップナビゲーションは、システムの[戻る]ボタンによって提供されるバックナビゲーションとは異なります。[戻る]ボタンは、ユーザーが最近操作した画面の履歴を時系列の逆順にナビゲートするために使用されます。これは通常、アプリの階層構造(アップナビゲーションの基礎)ではなく、画面間の時間的関係に基づいています。

于 2013-10-18T20:14:17.630 に答える