imageView点击

时间:2015-05-26 08:07:23

标签: android android-fragments android-studio toolbar

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

@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();
        }
    });
}

我的工具栏更改了另一个课程活动(带菜单):

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$1.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)

3 个答案:

答案 0 :(得分:0)

在您的活动中创建 setTitle(字符串标题)方法,并在每个片段中执行:

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

例如,在Fragment的onResume()方法

有关与片段进行通信的详细信息,请参阅此link

答案 1 :(得分:0)

在片段内部尝试像这样访问Acitivty View。

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

答案 2 :(得分:0)

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

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

(II)在我看来,这是最好的方式:

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

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

它也会改变你的片段和标题。

如果我误解了您的问题并且答案不符合您的预期,请告诉我。