2010-12-11 4 views
7
Ben ayarlarına gitmek için çalışıyorum

bir etkinlik başlamadan bulunan serigrafi. Şu anda, girdiye basmak sadece bende olduğu gibi aynı ekranı yeniliyor.preferences.xml

<Preference 
     android:title="@string/my_location_settings"> 
    <intent android:action="android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS"> 
    </intent> 
</Preference> 

Ve tezahür giriş şöyle görünür:

Benim preferences.xml şöyle Neyi yanlış yapıyorum

<activity android:name=".Preferences"> 
     <intent-filter> 
      <action android:name="android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
    </activity> 

?

logcat:

12-11 15:53:34.170: INFO/ActivityManager(173): Starting activity: Intent { act=android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS cmp=com.my.app/.Preferences } 
12-11 15:53:34.400: INFO/ActivityManager(173): Displayed activity com.my.app/.Preferences: 229 ms (total 229 ms) 

Bildirim:

<?xml version="1.0" encoding="utf-8"?> 

<activity android:name=".ViewActivity" android:label="@string/app_name"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity android:name=".MyPageOneActivity"> 
    </activity> 
    <activity android:name=".MyPageTwoActivity"> 
    </activity> 
    <activity android:name=".MyPageThreeActivity"> 
    </activity> 
    <activity android:name=".Preferences"> 
     <intent-filter> 
      <action android:name="com.my.app.PREFERENCES" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
    </activity> 
</application> 

<uses-sdk android:minSdkVersion="4" /> 
<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
<uses-permission android:name="android.permission.STORAGE" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"> 
</uses-permission> 
</manifest> 

Preferences.java ( biçimlendirme eksikliği üzgün):

package com.my.app; 

import android.os.Bundle; 
import android.preference.PreferenceActivity; 

public class Preferences extends PreferenceActivity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     addPreferencesFromResource(R.xml.preferences); 
    } 
} 

ve preferences.xml:

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> 
<EditTextPreference 
    android:title="Address 1" 
    android:key="customURLOne" 
    android:summary="Enter a new address for 1"> 
</EditTextPreference> 
<EditTextPreference 
    android:title="Address 2" 
    android:key="customURLTwo" 
    android:summary="Enter a new address for 2"> 
</EditTextPreference> 
<EditTextPreference 
    android:title="Address 3" 
    android:key="customURLThree" 
    android:summary="Enter a new address for 3"> 
</EditTextPreference> 
<Preference android:title="@string/my_location_settings"> 
    <intent android:action="android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS"> 
    </intent> 
</Preference> 

+0

Logcat ne diyor? Ayrıca, ana tercihler sayfanız için bildirim girişi gönderebilir misiniz? Geri dönmeye devam ettin mi? – EboMike

+0

Bu benim ana tercihler sayfamın açık girişidir, logcat: – qubz

+0

12-11 15: 53: 34.170: INFO/ActivityManager (173): Başlangıç ​​etkinliği: Niyet {act = android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS cmp = com. my.app/.Preferences} 12-11 15: 53: 34.400: INFO/ActivityManager (173): Görüntülenen etkinlik com.my.app/.Preferences: 229 msn (toplam 229 ms) – qubz

cevap

10

Tamam, anlıyorum - Bir niyet filtre ne olduğu hakkında net olmayabilir.

Kişisel tezahür giriş diyor ki:

<activity android:name=".Preferences"> 

Bu [paketiniz] .Preferences adı verilen etkinlik için tanımıdır. Biri eylem adı olarak ACTION_LOCATION_SOURCE_SETTINGS bir niyeti başlar her

<intent-filter> 
    <action android:name="android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS" /> 

Tercihler

 <category android:name="android.intent.category.DEFAULT" /> 

Bu, o eylem için varsayılan seçenek olması gerekiyordu ... tetiklenir.

</intent-filter> 
</activity> 

Açıkçası, (eğer bir alternatif sunmak için çalışıyoruz sürece Android yerleşik konumu kaynak etkinliklerine) faaliyeti için bir Android API eylem adı kullanmak istemiyoruz. Ana tercihler ekranınız için farklı bir eylem adı kullanın, tercihen paket adınızla ilgili bir şey kullanın.

DÜZENLEME: Ayrıca, bir PreferenceScreen kullanmayı deneyin:

<PreferenceScreen android:title="@string/my_location_settings"> 
    <intent android:action="android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS"> 
    </intent> 
</PreferenceScreen> 
+0

Kulağa hoş geliyor, sağ, niyet filtreleri hakkında belirsizdim. Bir atış yapacağım ve nasıl gittiğini göreceğim – qubz

+0

İyi şanslar! Bunun nasıl çalıştığını bana bildirin! – EboMike

+0

Hala şansım yok çünkü neden ne yaptığımı bilmiyorum. Eylem adını manifest ve preferences.xml dosyasında değiştirdiğimi mi söylüyorsunuz? Bunu yaparsam, istenen konum kaynağı aktivitesini nasıl başlatacağım? – qubz

1

Hiçbir şey benim için çalışıyor yüzden vermedi:

1 (ı ... bunun kötü bir fikir olduğunu düşünüyorum ama).daha kolay tezahür

<intent-filter> 
<action android:name="android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS" /> 
<category android:name="android.intent.category.DEFAULT" /> 
</intent-filter> 

1. yap tercihinden Bu filtreyi çıkarın

<Preference android:key="simple_key" 
     android:title="@string/title_simple_key"> 
    </Preference> 

2. senin PreferenceFragment

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    addPreferencesFromResource(R.layout.preferences); 
    // Load the preferences from an XML resource 
    findPreference("simple_key").setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { 
     @Override 
     public boolean onPreferenceClick(Preference preference) { 
      startActivity(new Intent(
        android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS)); 
      return false; 
     } 
    }); 

} 

Dip not içinde clickListener Ekle Türkçe için üzgünüm

+0

Neden bilmiyorum, ancak bildirdiğim etkinlik yerine diğer yöntemle, tercihler etkinliğini tekrar açtı, bu nedenle bu yöntem benim için çalıştı (: – FeanDoe