2013-08-06 17 views
-4

有人可以告诉我如何做到这一点?这里是代码:如何打电话以外的onClick类

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; 
       } 

      }); 
     } 
    } 

} 

我的问题是如何从其他类调用fg.start()。提前致谢。

+0

不能编译。 – njzk2

回答

0

由于Othersstatic,因此它不具有对MainActivity的引用,因此无法访问其成员。

由于OthersFragment,你不应该让非static,因为持有它们的父活动引用片段是在Android应用中泄漏的常见原因。

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

  • 如果s只需要在fratment,使sOthers片段中的一员,有创建它。

  • 如果片段在MainActivity仅使用时,可以做这样的事情:(这将创建一个片段到托管活动依赖它可以在以后导致问题)

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

  • 如果s需要你的所有应用程序,你可以子类Application并使其成为它的一员。您可以使用getActivity().getApplication()从片段访问应用程序。

+0

s是不同包装中的一个类。正如应用程序中随处可见的那样。谢谢你的时间伴侣。 – user2655267