Bluetooth 関連のアプリ (とminSdkVersion="18"
) には、次の 3 つの UI フラグメントのいずれかを表示する単一のMainActivity.javaがあります。
- MainFragment.java (トップ画面)
- SettingsFragment.java (設定画面、メニューから入力)
- ScanningFragment.java (近くの Bluetooth デバイスを一覧表示)
「上へ」ボタンを表示し、「戻るボタン」を処理するには、次のコードを配置します。
public class MainActivity extends Activity
implements BleWrapperUiCallbacks {
// set in onResume() of each fragment
private Fragment mActiveFragment = null;
´ @Override
public void onBackPressed() {
if (!getFragmentManager().popBackStackImmediate())
super.onBackPressed();
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_ACTION_BAR);
setContentView(R.layout.activity_root);
getActionBar().setDisplayHomeAsUpEnabled(true);
if (savedInstanceState == null) {
Fragment fragment = new MainFragment();
getFragmentManager().beginTransaction()
.replace(R.id.root, fragment, "main")
.commit();
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
getFragmentManager().popBackStackImmediate();
break;
case R.id.action_settings:
Fragment fragment = new SettingsFragment();
getFragmentManager().beginTransaction()
.addToBackStack(null)
.replace(R.id.root, fragment, "settings")
.commit();
break;
}
return super.onOptionsItemSelected(item);
}
これはうまく機能しますが、上記のスクリーンショットの左側に見られるように、 MainFragment.javaが表示されているときに「上へ」ボタンがまだ表示されているという表面的な問題があります。
電話してみた
getActionBar().setHomeButtonEnabled(false);
そのフラグメントがアクティブになっているとき、しかしそれは「アップボタン」を無効にするだけです-実際に非表示にすることはありません。