如何在onClick类之外调用

时间:2013-08-06 09:16:02

标签: android

有人可以告诉我怎么做吗?这是代码:

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()。提前谢谢。

1 个答案:

答案 0 :(得分:0)

由于Othersstatic,因此它不会引用MainActivity,因此无法访问其成员。

由于OthersFragment,因此您不应将其设为非static,因为保留对其父活动的引用的片段是Android应用中泄漏的常见原因。

要正确回答这个问题,我们需要知道s是什么。以下是解决问题的一些可能性:

  • 如果只需要s,请s成为Others片段的成员并在那里创建。

  • 如果片段仅用于MainActivity,您可以执行以下操作:

    ((MainActivity)getActivity()).fg.start();
    

    (这会创建一个片段到托管活动的依赖关系,以后可能会导致问题。)

  • 如果您的应用程序一直需要s,您可以继承Application并使其成为其成员。您可以使用getActivity().getApplication()

  • 从片段访问该应用程序