2012-12-12 19 views
0

這是我的愛好級別:如何去從偏好屏幕的另一項活動在android系統

customPref 
       .setOnPreferenceClickListener(new OnPreferenceClickListener() { 

        public boolean onPreferenceClick(Preference preference) { 

         Toast.makeText(getBaseContext(), 
           "The custom preference has been clicked", 
           Toast.LENGTH_LONG).show(); 
         SharedPreferences customSharedPreference = getSharedPreferences(
           "myCustomSharedPrefs", Activity.MODE_PRIVATE); 
         SharedPreferences.Editor editor = customSharedPreference 
           .edit(); 
         editor.putString("myCustomPref", 
           "The preference has been clicked"); 
         editor.commit(); 
         return true; 
        } 

       }); 

這能夠在吐司顯示數據。

但是,當我在prefernces使用這個代碼

customPref 
      .setOnPreferenceClickListener(new OnPreferenceClickListener() { 

       public boolean onPreferenceClick(Preference preference) { 

        Intent int1 = new Intent(getBaseContext(), 
          termandcondition.class); 
        getBaseContext().startActivity(int1); 


        return true; 
       } 

      }); 

然後就變成錯誤,現在顯示的數據,請幫助我如何申請去另一個活動

這是prefnces.xml文件

<Preference 
     android:key="customPref" 
     android:summary="END-USER LICENCE AGREEMENT FOR USING WWW.TAXMANN.COM" 
     android:title="Term and Condition" 



     /> 

我現在很多時候都可以嘗試請幫幫我

+1

你有沒有在你的Androidmaifest.xml文件中聲明termandcondition.java? –

+0

是的,親愛的,我做了,但mistke在這裏prefnces類不移動形式currnet到另一個,而我能夠顯示吐司 – user1872231

+0

再次,錯誤說什麼? Logcat輸出。 – NickL

回答

0

問題是您正在使用getBaseContext().startActivity()而不是startActivity()。因此,您嘗試從活動環境之外開始新的活動。並像錯誤說:Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want? 所以這可能不是你想要的。 Android需要你從其他活動中啓動活動,以維護後臺。

+0

我會告訴你親愛的但我沒有東西你將這個代碼應用因爲我試過它之前我會給你的logcat那 – user1872231

+0

你在做這個活動,是一個PreferenceActivity?如果不是這樣,那麼這個活動只是一個「正常」的課程,那麼這就是你的問題。您必須在類構造函數中傳遞活動上下文,或將此代碼移動到(首選項)活動類。 – NickL

+0

親愛的把這段代碼http://pastie.org/5514701 Logcat錯誤來了,請檢查 – user1872231