有人可以告诉我怎么做吗?这是代码:
public class MainActivity extends Activity implements
ActionBar.TabListener, android.content.SharedPreferences.OnSharedPreferenceChangeListener{
public s fg = new s();
public static class Others extends PreferenceFragment{
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preference_other);
Preference pref = findPreference("start");
pref.setOnPreferenceClickListener(new OnPreferenceClickListener(){
@Override
public boolean onPreferenceClick(Preference preference) {
HOW CAN I CALL S CLASS HERE
return false;
}
});
}
}
}
我的问题是如何从Others类调用fg.start()。提前谢谢。
答案 0 :(得分:0)
由于Others
为static
,因此它不会引用MainActivity
,因此无法访问其成员。
由于Others
是Fragment
,因此您不应将其设为非static
,因为保留对其父活动的引用的片段是Android应用中泄漏的常见原因。
要正确回答这个问题,我们需要知道s
是什么。以下是解决问题的一些可能性:
如果只需要s
,请s
成为Others
片段的成员并在那里创建。
如果片段仅用于MainActivity
,您可以执行以下操作:
((MainActivity)getActivity()).fg.start();
(这会创建一个片段到托管活动的依赖关系,以后可能会导致问题。)
如果您的应用程序一直需要s
,您可以继承Application
并使其成为其成员。您可以使用getActivity().getApplication()
。