7

मैं एन-लेयर प्राथमिकताएं लागू कर रहा हूं पहली परत प्राथमिकता प्राथमिकता-हेडर से लोड की गई है।वरीयता-हेडर से प्रारंभ गतिविधि

पहला हेडर सेटिंग्स का खंड बनाता है जो एक प्राथमिकता है। दूसरा ब्राउज़र गतिविधि है (दूसरा डेवलपर.android.com से एक उदाहरण है) जो निर्दिष्ट यूआरएल खोलता है। तीसरा मैं वरीयता एटिविटी का अगला स्तर बनना चाहता हूं जिसे वरीयता-हेडर से भी लोड किया जाएगा।

पहले दो काम ठीक है, लेकिन 3 अपवाद के साथ कोई ऐप्स क्रैश हो:

"android.content.ActivityNotFoundException कोई गतिविधि नहीं आशय {अधिनियम = android.intent.action.VIEW Dat = com.mycompany को संभालने के लिए मिला .myapp.ui.MyPreferenceActivity} "

MyPreferenceActivity प्रकट फ़ाइल में घोषित किया गया। शायद main_headers.xml में गतिविधि की घोषणा गलत है, लेकिन मुझे संदर्भ में कोई सुझाव नहीं मिला कि यह सही कैसे करें। कई बदलावों का प्रयास किया, वे काम नहीं किया।

उदाहरण मैं प्रयोग किया है: http://developer.android.com/reference/android/preference/PreferenceActivity.html

किसी भी विचार क्यों यह मेरे लिए काम नहीं करता है या कैसे अगले PreferenceActivity कहा जा सकता है? असल में मुझे केवल हेडर से एक गतिविधि शुरू करने की आवश्यकता है, जो वास्तव में सरल होना चाहिए लेकिन मुझे कुछ याद आ रहा है।

public class MySettings extends PreferenceActivity 
{ 
    @Override 
    public void onBuildHeaders(List<Header> target) 
    { 
     loadHeadersFromResource(R.xml.main_headers, target); 
    } 
} 

main_headers.xml:

<?xml version="1.0" encoding="utf-8"?> 
<preference-headers 
    xmlns:android="http://schemas.android.com/apk/res/android" > 

    <header android:title="Custom Settings" 
     android:fragment="com.mycompany.myapp.ui.SettingsFragment" /> 

    <header android:title="Intent" 
     android:summary="Launches an Intent."> 
     <intent android:action="android.intent.action.VIEW" 
       android:data="http://www.android.com" /> 
    </header> 

    <header android:title="Another Preference Activity"> 
     <intent android:action="android.intent.action.VIEW" 
      android:data="com.mycompany.myapp.ui.MyPreferenceActivity" /> 
    </header> 
</preference-headers> 

उत्तर

17

आप अपने तीसरे वरीयता से एक स्पष्ट गतिविधि शुरू करने के लिए चाहते हैं, तो ऐसा करते हैं:

<intent android:targetPackage="com.mycompany.myapp" 
     android:targetClass="com.mycompany.myapp.ui.MyPreferenceActivity" /> 
+0

मुझे लगता है कि यह एक पुराने सवाल यह है कि जोड़ें। क्या आपको डिफ़ॉल्ट एंड्रॉइड पैकेज के लिए एक इरादा निर्दिष्ट करने का तरीका पता है? जैसे 'Settings.ACTION_ADD_ACCOUNT'? – Jin

+0

मेरे साथ काम किया, धन्यवाद –

0

अगर आप जावा का उपयोग कर वरीयताओं बना रहे हैं, तो आप उसी परिणाम को प्राप्त कर सकते हैं,

PreferenceScreen editPhoneNumbersScreen = getPreferenceManager().createPreferenceScreen(mContext); 
    editPhoneNumbersScreen.setTitle(getResources().getString(R.string.change_add_emergency_numbers)); 
    editPhoneNumbersScreen.setSummary(getResources().getString(R.string.summary_add_no)); 


Intent i = new Intent(getApplicationContext(),TargetActivity.class); 
i.putExtra("change numbers", true); 
     editPhoneNumbersScreen.setIntent(i); 
0
<header android:title="Intent" 
    android:summary="Launches an Intent."> 
<intent android:targetPackage="com.mycompany.myapp" 
     android:targetClass="com.mycompany.myapp.ui.MyPreferenceActivity" /></header> 

और mainfest फ़ाइल में नीचे दिए गए कोड

<activity android:name=".activities.MyActivity" 
       android:label="@string/my_activity_title" 
       android:theme="@android:style/Theme.Black.NoTitleBar"> 
     <intent-filter> 
      <action android:name="com.example.myapp.activities.MyActivity" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
    </activity> 
संबंधित मुद्दे