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