Java 从片段调用MainActivty中的方法
我有Java 从片段调用MainActivty中的方法,java,android,Java,Android,我有MainActivty类和DrawerLayout,所以我动态添加片段 public void selectDrawerItem(MenuItem menuItem) { Fragment fragment = null; Class fragmentClass; switch(menuItem.getItemId()) { case R.id.nav_websites: fragmentClass = ScreenOne.cl
MainActivty
类和DrawerLayout
,所以我动态添加片段
public void selectDrawerItem(MenuItem menuItem) {
Fragment fragment = null;
Class fragmentClass;
switch(menuItem.getItemId()) {
case R.id.nav_websites:
fragmentClass = ScreenOne.class;
break;
case R.id.nav_commands:
fragmentClass = ScreenTwo.class;
break;
case R.id.nav_help:
fragmentClass = ScreenThree.class;
break;
default:
fragmentClass = ScreenOne.class;
}
try {
fragment = (Fragment) fragmentClass.newInstance();
} catch (Exception e) {
e.printStackTrace();
}
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction().replace(R.id.flContent, fragment).commit();
setTitle(menuItem.getTitle());
mDrawerLayout.closeDrawers();
}
第一段
public class ScreenOne extends Fragment implements Button.OnClickListener
我有一个函数
public void loadText() {
SharedPreferences myPrefs;
myPrefs = getActivity().getSharedPreferences("myPrefs", MODE_WORLD_READABLE);
siteName1.setText(myPrefs.getString("siteName1_txt", "").toString());
siteURL1.setText(myPrefs.getString("siteURL1_txt", "").toString());
}
在我的mainActivity类的onCreate方法中,我想调用loadText()方法,我尝试了
ScreenOne fragment = new ScreenOne();
fragment.loadText();
但那没用。我找不到ID或标记的片段,因为它们没有。非常感谢您提供的任何帮助或建议。您可以使用like访问任何公共活动方法
((YourActivity)getActivity()).nameofmethod
只有与您的活动相关的人才能使用like访问活动的任何公共方法
((YourActivity)getActivity()).nameofmethod
您的代码中有几个大问题,我看到了这些问题:
- 你真的需要了解
- 你不知道你有什么碎片,但总是
- 您希望在onCreate中使用片段方法,而不考虑
- 您可以尝试创建一个片段实例,然后使用它
- 当您应该使用
- 您的活动与片段耦合,因为您调用
也就是说,对于这个特定问题,最简单的解决方法是仅在保证当前屏幕为当前屏幕时调用loadText方法(即,在更改它时执行此操作,或保留对当前项的引用并使用instanceOf)
但是我想澄清的是,这不是最干净的解决方案,我建议您坚持使用,让片段负责加载自己的文本,而活动负责将共享首选项中的值作为参数传递(或通过接口传递)。这避免了在片段准备就绪之前调用loadText的任何更改。您的代码有几个大问题,我看到的问题如下:
- 你真的需要了解
- 你不知道你有什么碎片,但总是
- 您希望在onCreate中使用片段方法,而不考虑
- 您可以尝试创建一个片段实例,然后使用它
- 当您应该使用
- 您的活动与片段耦合,因为您调用
也就是说,对于这个特定问题,最简单的解决方法是仅在保证当前屏幕为当前屏幕时调用loadText方法(即,在更改它时执行此操作,或保留对当前项的引用并使用instanceOf)
但是我想澄清的是,这不是最干净的解决方案,我建议您坚持使用,让片段负责加载自己的文本,而活动负责将共享首选项中的值作为参数传递(或通过接口传递)。这避免了在片段准备就绪之前调用loadText的任何更改。您可以使用活动的上下文调用您的活动
方法,例如:
((MainActivity)context).updateWishlistCount();
希望这对你有帮助 您可以使用活动的上下文调用您的活动
方法,例如:
((MainActivity)context).updateWishlistCount();
希望这对你有帮助 您可以使用以下答案轻松完成:java脚本在哪里?首先,您必须检查当前可见的片段,bcz u只能在片段当前处于活动状态时从ScreenOne调用函数。您可以使用以下答案轻松完成:java脚本在哪里?首先,您必须检查当前可见的片段,bcz u只能在ScreenOne当前处于活动状态时从ScreenOne调用函数。他希望调用的函数位于活动的片段中,而不是您将使用getActivity的片段中。此外,为了解耦一个片段(它是整个点),您需要在这里使用一个接口。还有人在您之前很久就发布了这个相同的答案。他希望调用的函数位于活动的片段中,而不是您将使用getActivity的片段中。此外,为了解耦一个片段(它是整个点),您需要在这里使用一个接口。也有人在你之前很久就发布了这个相同的答案。正如达尔文在另一个答案中提到的——他希望调用一个函数,而不是达尔文在另一个答案中提到的那样——他希望调用一个函数,而函数位于活动的片段中,而不是相反