imageView 单击后来自片段的新片段

New fragment from fragment after imageView click

我正在尝试调用另一个片段,但是当我调用它时,工具栏仍然具有相同的名称,如何重新加载它?

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    ImageView actualites = (ImageView) getView().findViewById(R.id.thirdBlock);
    actualites.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            Fragment fragment = new Actualites();
            FragmentManager fragmentManager = getFragmentManager();
            FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
            fragmentTransaction.replace(R.id.accueil, fragment);
            fragmentTransaction.commit();
        }
    });
}

我的工具栏在另一个 class activity(带菜单)上发生了变化:

private void displayView(int position) {
    Fragment fragment = null;
    String title = getString(R.string.app_name);
    switch (position) {
        case 0:
            fragment = new Accueil();
            title = getString(R.string.title_accueil);
            break;
        case 1:
            fragment = new NosOffres();
            title = getString(R.string.title_nosoffres);
            break;
        case 2:
            fragment = new ContactezNous();
            title = getString(R.string.title_contact);
            break;
        case 3:
            fragment = new Actualites();
            title = getString(R.string.title_actu);
            break;
        case 4:
            fragment = new MentionsLegales();
            title = getString(R.string.title_mentions);
            break;
        default:
            break;
    }

    if (fragment != null) {
        FragmentManager fragmentManager = getSupportFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        fragmentTransaction.replace(R.id.container_body, fragment);
        fragmentTransaction.commit();

        // set the toolbar title
        TextView titlet;
        titlet = (TextView) findViewById(R.id.main_toolbar_title);
        titlet.setText(title);
        titlet.setTypeface(Typeface.createFromAsset(getAssets(), "fonts/GothamBook.ttf"));
    }
}

谢谢!!我只需要取回工具栏名称!

我刚试过:

    public void onClick(View v) {
        Fragment fragment = new Actualites();
        FragmentManager fragmentManager = getFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        fragmentTransaction.replace(R.id.accueil, fragment);
        fragmentTransaction.commit();
        String title = getString(R.string.title_actu);
        TextView titlet;
        titlet = (TextView) v.findViewById(R.id.main_toolbar_title);
        titlet.setText(title);
        titlet.setTypeface(Typeface.createFromAsset(getActivity().getAssets(), "fonts/GothamBook.ttf"));
    }

错误:

05-26 08:19:56.859  28432-28432/package E/AndroidRuntime﹕ FATAL EXCEPTION: main
    java.lang.NullPointerException
            at package.Accueil.onClick(Accueil.java:46)
            at android.view.View.performClick(View.java:3480)
            at android.view.View$PerformClick.run(View.java:13983)
            at android.os.Handler.handleCallback(Handler.java:605)
            at android.os.Handler.dispatchMessage(Handler.java:92)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:4340)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
            at dalvik.system.NativeStart.main(Native Method)

在您的 activity 中创建一个 setTitle(String title) 方法并在每个片段中执行:

((YourActivity)getActivity()).setTitle(newTitle)

比如在Fragment的onResume()方法中

有关与片段通信的更多信息,请参阅此 link

在您的片段中尝试像这样访问活动视图。

TextView textView =(TextView)getActivity().findViewById(R.id.main_toolbar_title);
 textView.setText("");

我们可以通过两种方式更新标题和更改片段:

(I) 在您的片段的 onClickListener() 内 使用 activity 片段管理器替换你的片段 getActivity.getFragmentmanager() 并使用你的容器 ID 然后你可以通过在你的 activity 中创建一些方法来通知你的标题并使用 (Activityname)getActivity().methodName() 访问它.

(II) 我认为这是最好的方法:

通过 getActivity() 调用您的 activity 并直接调用您的 displayView(pos) 方法。

((XYZ)getActivity()).displayView(3);

它也会更改您的片段和标题。

如果我误解了你的问题并且答案不是你所期望的,请告诉我。