2016-11-13 15 views
2

私は没入型スティッキーモードに関する多くの質問をAndroidで読んだことがありますが、私の質問に対しては特定の答えが見つかりません。システムバーは、没入型スティッキーモードでは消えます

私はonBackPressed function not working under IMMERSIVE STICKY modeを読んでいますが、ImageButtonを押すとアプリケーションは正常に戻ります。

私はアプリの全期間中、没入型のスティッキーモードを維持したいと考えています。共有要素の移行の有無にかかわらず、新しいアクティビティを起動するときに問題はありません。しかし、私が戻ってくると、時にはシステムバーが現れ、すぐに再び見えなくなります。これは特に私がしばらくの間活動に滞在しているときに起こります。

public void setBorroRingsOnClickListener(View view){ 
    dBHelper.close(); 
    Intent intent = new Intent(this, _DominoScene.class); 
    startActivity(intent); 
} 

そして私は_Domino.classから_TrickPage.classに戻って取得するためにフィニッシュ()を呼び出し:

この移行は_TrickPage.classから呼び出され

findViewById(R.id.picture).setOnClickListener(new View.OnClickListener(){ 
    @Override 
    public void onClick(View v){ 
     dBHelper.close(); 
     finish(); 
    } 
}); 

私が使用して別の遷移があります共有要素の遷移。

picture.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      dBHelper.close(); 
      hideMainContent(); 
      finishAfterTransition(); 
     } 
    }); 

:私はfinishaftertransition()を呼び出し、

class MyOnClickListener implements View.OnClickListener { 

    private final int position; 

    public MyOnClickListener(int position){ 
     this.position = position; 
    } 

    @Override 
    public void onClick(View v) { 
     ... 

     //link clicked button to _TrickPage button for shared transition 
     v.setTransitionName("trick"); 

     //make and start shared transition to _TrickPage 
     ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(
       (Activity)mContext, 
       new Pair<View, String>(v, "trick") 
     ); 
     Intent intent = new Intent(v.getContext(), _TrickPage.class); 
     v.getContext().startActivity(intent, options.toBundle()); 
    } 
} 
最後に

、_TrickPageから_Submenuに戻って取得するには:次は私の_Submenu活動にBaseAdapter、オブジェクトを拡張ButtonAdapterの内部クラスであり、 _Submenu、_TrickPage、および_DominoSceneの各アクティビティのonCreate()およびonResume()メソッドにUIフラグを設定しました。私はまた、各アクティビティに以下があります。

public void onWindowFocusChanged(boolean hasFocus) { 
    super.onWindowFocusChanged(hasFocus); 
    //if (hasFocus) 
     getWindow().getDecorView().setSystemUiVisibility(
       View.SYSTEM_UI_FLAG_LAYOUT_STABLE 
         | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 
         | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 
         | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION 
         | View.SYSTEM_UI_FLAG_FULLSCREEN 
         | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY); 

    if (hasFocus && playAnimations) { 
     //showMainContent(); 
     playAnimations = false; 
    } 
} 

これは、スタックオーバーフローに質問をして私の最初の時間ですので、あなたはそこに問題があると思うならば、私のコードの他の部分のためにお問い合わせください。ありがとう!

答えて

0

すべてのアクティビティ(setContentViewメソッドの直後)からonCreateメソッドでこのメソッドを呼び出します。そしてまたonWindowsFocusChanged

public void goImmersive() 
{ 
getWindow().getDecorView().setSystemUiVisibility(
       View.SYSTEM_UI_FLAG_LAYOUT_STABLE 
         | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 
         | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 
         | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION 
         | View.SYSTEM_UI_FLAG_FULLSCREEN 
         | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY); 
} 
+0

関連するすべての活動についてのOnCreate()(setContentView後の()の呼び出し)、OnResume()とonWindowsFocusChanged()で実行されるこのコードを持っています。私はこれをやり直すことができますが、問題を解決するとは思いません。 – Didoubletwice

+0

それは私のために働かなかった。すべてのアクティビティで 'HelperFunctions.goImmersive(getWindow());を呼び出すことによってグローバルな静的メソッド' goImmersive(ウィンドウウィンドウ) 'を作成しました。このメソッド呼び出しは、setContentView()の後にOnCreateすべてのアクティビティのonWindowsFocusChanged()メソッドで、私が戻ったときにバーはまだ点滅します。 – Didoubletwice

関連する問題