web-dev-qa-db-ja.com

android特定のフラグメントでツールバーを非表示にする

解決方法がわからない問題があります。特定のフラグメントでツールバーを非表示にするにはどうすればいいですか、すでにインターネット上で検索しており、アクティビティとフラグメントがそれを解決することを伝えていました。しかし、私にはまったく機能しません。ここに私のコードがあります:

主な活動:

public class MainActivity extends ActionBarActivity implements like_frag.OnHideToolbar{

....

public void onHidingToolbar(int position){
        Toolbar toolbar = (Toolbar)findViewById(R.id.toolbar);
        if(toolbar == null){
            getSupportActionBar().hide();
        }else{
            getSupportActionBar().hide();
        }
    }

like_frag.Java

public class like_frag extends Fragment {

    OnHideToolbar mCallback;
    Toolbar toolbar;

    public interface OnHideToolbar {
        public void onHidingToolbar(int position);
    }

    public void onAttach(Activity activity){

        try{
            mCallback = (OnHideToolbar) activity;
        }catch(ClassCastException e){
            throw new ClassCastException(activity.toString() + "error implementing");
        }
    }
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
        View rootView = inflater.inflate(R.layout.swipefrag, container, false);

        toolbar = (Toolbar)getActivity().findViewById(R.id.toolbar);

        return rootView;
    }

    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
    }
}

前もって感謝します。

ツールバーの中に引き出しがあります。

28
smovie9

このコードを、ツールバーを非表示にするフラグメントに配置します...

 @Override
public void onResume() {
    super.onResume();
    ((AppCompatActivity)getActivity()).getSupportActionBar().hide();
}
@Override
public void onStop() {
    super.onStop();
    ((AppCompatActivity)getActivity()).getSupportActionBar().show();
}
70
Soni Kumar

フラグメントのonCreateメソッド呼び出しで:
((AppCompatActivity) getActivity()).getSupportActionBar().hide();
AppCompateActivityを、使用したアクティビティクラスに置き換えます。

28
dc-aoxn

フラグメントにインターフェースを作成し、それを使用して、ツールバーを非表示にするように親アクティビティに指示します。

フラグメントに次の行を追加します。

private OnEventListener listener;

public interface OnEventListener {

    void hideToolbar() ;
}

public void setOnEventListener(OnEventListener listener) {

    this.listener = listener;
}

メインアクティビティでフラグメントを作成したら、以下を追加します。

    myFragment.setOnEventListener(new MyFragment.OnEventListener() {
        @Override
        public void hideToolbar() {

            getSupportActionBar().hide();
        }
    });

ツールバーを非表示にする必要があるときはいつでも実行します:

listener.hideToolbar();

フラグメントの中から。

8
Chris Read

ツールバーを無効にするフラグメントにこれらのメソッドを追加し、フラグメントのonStop()で再度表示するようにします。

 @Override
    public void onResume() {
        super.onResume();
        ((AppCompatActivity)getActivity()).getSupportActionBar().hide();
    }

    @Override
    public void onStop() {
        super.onStop();
        ((AppCompatActivity)getActivity()).getSupportActionBar().show();
    }
3

kotlinでは、次のようにsupportActionBarを非表示および表示します。

override fun onResume() {
    super.onResume()
    (activity as AppCompatActivity).supportActionBar?.hide()
}

override fun onStop() {
    super.onStop()
    (activity as AppCompatActivity).supportActionBar?.show()
}

独自のカスタムツールバーが必要な場合は、OncreateViewで以下を設定します。

//your Custom toolbar in xml
val toolbar = binding.toolbar
(activity as AppCompatActivity).setSupportActionBar(toolbar)
3
Sanam Yavarpor

ツールバーを非表示にするフラグメントにこのコードを挿入...

This(((AppCompatActivity)getActivity())。getSupportActionBar()。hide();)をonCreateViewまたはonResumeに追加します。

onDestroy()でこれを行います

@Override
public void onDestroy() {
super.onDestroy();
((AppCompatActivity)getActivity()).getSupportActionBar().show();}
2
karan1.singh