美好的一天,朋友。 我有一個PreferenceActivity,它是從XML文件填充的。 當我們按下一個項目時,我們應該啓動新的活動。怎麼做?我應該在XML文件或Java類中編寫什麼內容?從PreferenceActivity推出新活動
回答
後您使用
addPreferencesFromResource(R.xml.preferences);
找到您要使用
findPreference("foo_bar_pref");
設置的onClick和鑄像
Preference fooBarPref = (Preference) findPreference("foo_bar_pref");
定義它自己的喜好添加的喜好
然後喲u能方便地使用
fooBarPref.setOnPreferenceClickListener (new OnPreferenceClickListener()){...}
你可以開始你的新活動(使用一個Intent),該監聽器裏設置它的onClick。
您必須將onClickListener註冊到要啓動活動的視圖。然後,在這個方法中,你只需要用一個intent來調用這個活動。事情是這樣的:
Intent intent = new Intent(this, ActivityToLaunch.class);
// Start boardgame
startActivity(intent);
這是初級,但無論如何感謝! :) – QuickNick
這是一個不錯的教程,用於動態添加偏好設置......稍後您必須自定義方式。
在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);
}
}
}
我喜歡這第一個選項比接受的答案更好,因爲它是更清潔,只需在首選項上使用「setIntent」。 – Josh
考慮使用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>
對於那些在嘗試在首選項中啓動其活動後獲得'ActivityNotFoundException'的人,您可能會不恰當地使用子包名稱,就像我正在做的那樣。 如果是這種情況,請僅使用targetClass部分中的子包。 '<意圖機器人:行動= 「android.intent.action.VIEW」 機器人:targetPackage = 「com.package.name」 機器人:targetClass = 「com.package.name.subpackage.ActivityName」/>' – Andrew
要也許可以節省一些人的痛苦:您可以在
Gradle用戶,如果你在build.gradle中聲明瞭'applicationId',我的解決方案可能會幫助你! http://stackoverflow.com/a/27053915/499125 –
Gradle Builders,Look Over Here!
如果您使用gradle over ant作爲構建工具,並且您在android
內聲明瞭applicationId
。
[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>
你,先生,值得每升這個星球能夠產生的愛。 –
然後我需要很多罐來填充。 –
- 1. Listpreference推出新的活動
- 2. 推出從給出的例子中的新活動
- 3. 的OutOfMemoryError上推出了新的活動
- 4. 谷歌地圖oninfowindowclicklistener推出新活動
- 5. 活動在推出新活動時被破壞
- 6. Android:無法從內部類推出新的活動
- 7. Android推出各種活動
- 8. 推出第二個活動
- 9. PreferenceActivity調用主要活動的方法
- 10. 常用代碼,活動和PreferenceActivity
- 11. 從菜單中啓動preferenceActivity
- 12. 從PreferenceActivity
- 13. 如何從PreferenceActivity創建Android App Widget作爲配置活動
- 14. 意圖是很慢的推出新的活動:(
- 15. Android推出帶有意向標誌的新活動
- 16. 如何停止FrameAnimation並推出新的活動?(意向)
- 17. 推送通知開啓新活動
- 18. ImageView活動推出的尺寸
- 19. 混淆有關活動推出
- 20. Android推送新活動,同時清除其他活動
- 21. 推薦的方式從非活動類啓動活動
- 22. 從另一個活動更新活動
- 23. 從MAIN活動中調用新活動
- 24. 刷新活動,活動從片段
- 25. PreferenceActivity更新概要
- 26. PreferenceActivity刷新問題
- 27. 刷新和重新加載活動從服務而不退出活動,Android appwidget
- 28. 從非活動的Viewcontroller推送到新的Viewcontroller(編程)
- 29. Android:如何從其他活動推出待定意圖?
- 30. 如何從espresso中推出另一個活動測試案例
謝謝,非常有用的答案! – QuickNick
歡迎您。 :)我想你應該投票並檢查問題的答案。 – faradaj
我是新手,這些選項在哪裏? (我檢查你的答案是有用的)。 – QuickNick