こんにちは、友達。 PreferenceActivityがあり、XMLファイルから入力されています。 1つのアイテムを押すと、新しいアクティビティを開始する必要があります。どうやってするの? XMLファイルまたはJavaクラスで何を書けばよいですか?
を使用して設定を追加した後
addPreferencesFromResource(R.xml.preferences);
onClickを使用して設定する設定を見つけます
findPreference("foo_bar_pref");
のようにキャストして定義します
Preference fooBarPref = (Preference) findPreference("foo_bar_pref");
次に、簡単にonClickを使用して設定できます
fooBarPref.setOnPreferenceClickListener (new OnPreferenceClickListener()){...}
そのリスナー内で(インテントを使用して)新しいアクティビティを開始できます。
Xmlプリファレンスを使用している場合、xmlにコードを直接追加できます。
<Preference
Android:title="Some Title"
Android:summary="Some Description">
<intent
Android:action="Android.intent.action.VIEW"
Android:targetPackage="com.package.name"
Android:targetClass="com.package.name.ActivityName"
/>
</Preference>
ビルドツールとしてgradle over antを使用していて、applicationId
内でAndroid
を宣言した場合。
[build.gradle]:
Android {
defaultConfig {
...
applicationId "com.overriding.package.name"
}
...
}
これにより、AndroidManifest.xml
のAndroid:package
でアプリの一意の識別子として宣言した値が上書きされます。
[AndroidManifest.xml]
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
package="com.my.package">
<activity Android:name=".settings.MyActivity"/>
</manifest>
<intent>
では、両方のパッケージ名を考慮する必要があります。
<Preference
Android:title="Some Title"
Android:summary="Some Description">
<intent
Android:targetPackage="com.overriding.package.name"
Android:targetClass="com.my.package.settings.MyActivity/>
</Preference>
これは設定を動的に追加するための素晴らしいチュートリアルです...後で独自の方法でカスタマイズする必要があります。
XMlの場合:
<Preference Android:key="key" Android:title="See Android Market"></Preference>
Javaクラス:
Preferences preferences=findPreference("key");
preferences.setIntent(new Intent(Intent.ACTION_VIEW,Uri.parse("https://market.Android.com/")));
OR
import Android.content.Context;
import Android.content.Intent;
import Android.net.Uri;
import Android.os.Bundle;
import Android.preference.CheckBoxPreference;
import Android.preference.DialogPreference;
import Android.preference.Preference;
import Android.preference.PreferenceActivity;
import Android.preference.PreferenceCategory;
import Android.preference.PreferenceScreen;
import Android.widget.LinearLayout;
import Android.widget.ListView;
public class SettingsActivity extends PreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
/* Some initializations */
LinearLayout layout = new LinearLayout(this);
layout.setOrientation(LinearLayout.VERTICAL);
ListView listView = new ListView(this);
listView.setId(Android.R.id.list);
listView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT, 1));
layout.addView(listView);
this.setContentView(layout);
/* Preferences time! (we build the preferences) */
Preference version = getPreference("My School Manager", "Version 2.0",null);
Preference author = getPreference("Author", "Balu", null);
Preference marketLink = getPreference("Android market","View all my apps :)",new Intent(Intent.ACTION_VIEW, Uri.parse("http://market.Android.com/")));
CheckBoxPreference check = new CheckBoxPreference(this);
check.setTitle("Checkbox");
check.setSummary("Example of checkbox");
DialogPreference license = new MyDialogPreference(this, "License","This is the license for...bla bla");
/* Now we add the preferences to the preference screen */
PreferenceScreen preferenceScreen = this.getPreferenceManager()
.createPreferenceScreen(this);
addPreferenceCategory(preferenceScreen, "Preferences Tutorial",version, author, marketLink, check, license);
this.setPreferenceScreen(preferenceScreen);
}
private boolean addPreferenceCategory(PreferenceScreen preferenceScreen,
String titleCategory, Preference... preferences) {
boolean addPreference = false;
for (Preference preference : preferences) {
if (preference != null)
addPreference = true;
}
if (addPreference) {
PreferenceCategory preferenceCategory = new PreferenceCategory(this);
preferenceCategory.setTitle(titleCategory);
preferenceScreen.addPreference(preferenceCategory);
for (Preference preference : preferences) {
if (preference != null)
preferenceCategory.addPreference(preference);
}
return true;
} else
return false;
}
private Preference getPreference(String title, String summary, Intent intent) {
Preference pref = new Preference(this);
pref.setTitle(title);
pref.setSummary(summary);
if (intent != null)
pref.setIntent(intent);
return pref;
}
public class MyDialogPreference extends DialogPreference {
public MyDialogPreference(Context context, String title, String text) {
super(context, null);
this.setTitle(title);
this.setDialogMessage(text);
}
}
}
アクティビティを起動するビューにonClickListenerを登録する必要があります。次に、このメソッド内で、インテントを使用してアクティビティを呼び出すだけです。このようなもの:
Intent intent = new Intent(this, ActivityToLaunch.class);
// Start boardgame
startActivity(intent);