我试图从另一个片段调用片段,但是当我调用它时,工具栏仍然具有相同的名称,如何重新加载它?
@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)
答案 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);
它也会改变你的片段和标题。
如果我误解了您的问题并且答案不符合您的预期,请告诉我。