2010-12-11 4 views
7

から活動を開始します。現時点では、エントリを押すだけで、私が行ったのと同じ画面がリフレッシュされます。は私が見つけた設定画面に移動しようとしているあるpreferences.xml

マイあるpreferences.xmlは、次のようになります。

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

そして、私のマニフェストエントリは次のようになります。

<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) 

マニフェスト:

<?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( フォーマットの欠如について申し訳ありません):

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

とある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は何を言いますか?また、メインの設定ページのマニフェストエントリを投稿できますか?あなたが元に戻ってきたものは? – EboMike

+0

これは、メインの設定ページのマニフェスト・エントリです.logcat: – qubz

+0

12-11 15:53:34.170:INFO/ActivityManager(173):開始アクティビティ:インテント{act = android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS cmp = com。 my.app/.Preferences} 12-11 15:53:34.400:INFO/ActivityManager(173):表示されたアクティビティcom.my.app/.Preferences:229 ms(合計229 ms) – qubz

答えて

10

さて、私は理解して考える - あなたはインテントフィルタがあるかについては不明です。

あなたのマニフェストエントリは言う:

<activity android:name=".Preferences"> 

これは、[パッケージ] .Preferencesと呼ばれるあなたの活動のための定義です。

誰かがアクション名としてACTION_LOCATION_SOURCE_SETTINGSとの意図を起動するたびに設定がトリガされます
<intent-filter> 
    <action android:name="android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS" /> 

...

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

これは、そのアクションのデフォルトのオプションであると考えられます。明らかに

</intent-filter> 
</activity> 

、あなたは(あなたがAndroidの組み込みの位置情報ソース活動に代替品を提供しようとしている場合を除き)あなたの活動のためのAndroid APIのアクション名を使用したくありません。メインの設定画面には別のアクション名を使用してください。できればパッケージ名のあるものを使用してください。

EDIT:また、PreferenceScreenを使用してみてください:何が​​私のために動作しません

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

良い、あなたの権利、私はインテントフィルターについて不明であった、ありがとう。私はそれにショットを与え、それがどうなるかを見てみよう。 – qubz

+0

幸運!それがどのように機能するか教えてください! – EboMike

+0

私はまだ私が何をやっているのかわからないと感じるので、運がまだありません。マニフェストとpreferences.xmlファイルのアクション名を変更すると言っていますか?私がそれをするなら、私はどのようにして希望の場所の活動を開始するでしょうか? – qubz

1

ので、私はやった:(私はそれが悪いアイデアだと思うけど...)

1。簡単にマニフェスト

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

1.メイクの好みからこのフィルタを削除

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

2. 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; 
     } 
    }); 

} 

P.S.でClicklistenerを追加申し訳ありません私の英語のため

+0

私は理由はわかりませんが、私が宣言したアクティビティの代わりに他のメソッドを使って、それは再びプリファレンスのアクティビティを開いたので、このメソッドは私のために働いていました(: – FeanDoe

関連する問題