我如何更改此代码以在活动中使用它?

时间:2019-01-28 10:14:34

标签: android android-fragments android-toolbar fragmentmanager android-titlebar

在添加片段时,我具有以下代码来设置标题:

if (!HomeActivity.checkLoading)
        SettingsMain.showDilog(getActivity());
    Call<ResponseBody> myCall = restService.getHomeDetails(UrlController.AddHeaders(getActivity()));
    myCall.enqueue(new Callback<ResponseBody>() {
        @Override
        public void onResponse(Call<ResponseBody> call, Response<ResponseBody> responseObj) {
            try {
                if (responseObj.isSuccessful()) {
                    Log.d("info HomeGet Responce", "" + responseObj.toString());

                    JSONObject response = new JSONObject(responseObj.body().string());
                    if (response.getBoolean("success")) {
                        responseData = response.getJSONObject("data");
                        HomeActivity.checkLoading = false;
                        getActivity().setTitle(response.getJSONObject("data").getString("page_title"));

我想在活动中添加addOnBackStackChangedListener,所以我如何在活动中使用该代码在活动中设置标题,同时返回:

getSupportFragmentManager().addOnBackStackChangedListener(
            new FragmentManager.OnBackStackChangedListener() {
                public void onBackStackChanged() {

                    // Update your UI here.
                                       }
            });

2 个答案:

答案 0 :(得分:0)

我不确定这是您想要的,但是您可以尝试

    activity?.supportActionBar?.title = "some title"

在标签栏中选择其他标签时,我用它来更改标题

答案 1 :(得分:0)

您可以像这样管理活动中的onbackpressed方法:

@Override
public void onBackPressed(){
    FragmentManager fm = getFragmentManager();
    if (fm.getBackStackEntryCount() > 0) {
        Log.i("MainActivity", "popping backstack");
        fm.popBackStack();
        Fragment fragment = getFragmentManager().findFragmentByTag("YOUR_TARGET_FRAGMENT_TAG");
        if (fragment instanceof FragmentA) {
            // add your code to change title of toolbar
        }
    } else {
        Log.i("MainActivity", "nothing on backstack, calling super");
        super.onBackPressed();  
    }
}