我在这里遇到了一些问题.我想要做的是从PreferenceActivity中启动一个Activity.所以我的preference.xml保存了首选项布局,如下所示:
<Preference android:title="Launch Activity" >
<intent android:action="org.momo.SOME_ACTIVITY" />
</Preference>
Run Code Online (Sandbox Code Playgroud)
清单知道我想要启动的活动..
<activity android:label="@string/app_name" android:name="SomeActivity">
<intent-filter>
<category android:name="android.intent.category.DEFAULT" />
<action android:name="org.momo.SOME_ACTIVITY" />
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
猜猜看,当我想启动它时,我得到一个安全例外(Permission Denial).我错过了什么吗?我对意图的理解仍然有点不完整,但我认为它必须以这种方式工作.
感谢您的任何帮助!
我的应用程序由一些活动组成.
活动A是我的主菜单,带有一些图标.此活动可以根据您按哪个图标启动:活动B,C,D,E或F.
这很好,很容易,活动A是默认的.
现在,我优先选择允许用户开始他们喜欢的活动.
实际上,一些用户更愿意直接获得活动B.
我找到解决方案的唯一方法是在活动A中执行此操作此解决方案非常难看,因为活动A将始终自动启动和关闭:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
settings = PreferenceManager
.getDefaultSharedPreferences(getBaseContext());
final Intent intent = getIntent();
String action = intent.getAction();
if (Intent.ACTION_MAIN.equals(action)) {
switch (Integer.valueOf(settings.getString("Activitypref", "1"))) {
case 2:
Intent i = new Intent(ActivityA.this, ActivityB.class);
finish();
startActivity(i);
break;
case 3:
i = new Intent(ActivityA.this, ActivityC.class);
finish();
startActivity(i);
break;
case 4:
i = new Intent(ActivityA.this, ActivityD.class);
finish();
startActivity(i);
break;
case 5:
i = new Intent(ActivityA.this, ActivityE.class);
finish();
startActivity(i);
break;
case 6:
i = new Intent(ActivityA.this, ActivityF.class); …Run Code Online (Sandbox Code Playgroud) 是否可以以编程方式访问设置为首选项的布局?
这就是我所拥有的,一个非常简单的项目 - 概念验证
偏好活动:
package com.example;
import android.os.Bundle;
import android.preference.PreferenceActivity;
import android.util.Log;
import android.view.View;
public class PreferenceExampleActivity extends PreferenceActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
ImageView v = (ImageView) findViewById(R.id.iconka);
}
}
Run Code Online (Sandbox Code Playgroud)
资源XML:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
android:key="settings">
<PreferenceCategory
android:title="Category Setting Name"
android:order="1"
android:key="Main">
<Preference
android:order="1"
android:title="Setting"
android:summary="Setting1"
android:layout="@layout/profile_preference_row"
android:key="profile" />
</PreferenceCategory>
</PreferenceScreen>
Run Code Online (Sandbox Code Playgroud)
首选项的自定义布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/widget_frame"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?android:attr/listPreferredItemHeight"
android:gravity="center_vertical"
android:paddingRight="?android:attr/scrollbarSize">
<RelativeLayout …Run Code Online (Sandbox Code Playgroud) 在Android上创建PreferenceScreen时,您的应用程序会为设置创建默认的SharedPreferences文件.我想读这个名字,或者在没有指定名字的情况下获得参考.
目前我使用:
SharedPreferences prefs = ctx.getSharedPreferences("prefs", 0);
SharedPreferences.Editor ed=prefs.edit();
Run Code Online (Sandbox Code Playgroud)
但是这会返回首选项的另一个副本.当我检查/ data/data/myapk/shared_prefs中的文件夹时
我看到两个文件,一个名为prefs.xml,另一个是我的[包名] _preferences.xml(这是由PreferenceActivity创建的);
如何使用默认文件名获取共享首选项的实例,所以我不应该提及它的名称?
我创建了一个DatePickerPreference,即我扩展了DialogPreference并在其中创建了一个DatePicker对象并让它几乎完美地工作.当您单击上下箭头并保存所选值时,它会更改值.
但是,如果您在字段内单击并在那里键入新值,则不会保存更新的值!使用箭头时,始终调用onDateChanged()方法; 当用户进入该字段并对其进行编辑时,如果他选择另一个字段,它将仅调用onDateChanged(在这种情况下,如果他编辑最后一个字段并且只是点击OK,则将忽略最后一次编辑).我发现Eric Besette在他的TimePickerPreference上发布了类似的问题
这是我的代码:
public class DatePickerPreference extends DialogPreference implements
OnDateChangedListener, OnDateSetListener {
@Override
protected View onCreateDialogView() {
DatePicker picker = new DatePicker(getContext());
mDate = getPersistedLong(System.currentTimeMillis());
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(mDate);
int day = calendar.get(Calendar.DAY_OF_MONTH);
int month = calendar.get(Calendar.MONTH);
int year = calendar.get(Calendar.YEAR);
picker.init(year, month, day, this);
return picker;
}
public void onDateChanged(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
mDate = (new Date(year - 1900, monthOfYear, dayOfMonth)).getTime();
}
public void onDateSet(DatePicker view, int year, int monthOfYear, …Run Code Online (Sandbox Code Playgroud) 我目前正在尝试使用RelativeLayout的http://android-journey.blogspot.com/2010/01/for-almost-any-application-we-need-to.html教程来实现SeekBarPreference类.第一个问题是TextView preferenceText根本没有显示.第二个问题是酒吧不能像常规喜好那样滑动(比如媒体音量栏)?
public class SeekBarPreference extends Preference implements
OnSeekBarChangeListener {
public static int maximum = 100;
public static int interval = 5;
private float oldValue = 25;
private TextView Indicator;
public SeekBarPreference(Context context) {
super(context);
}
public SeekBarPreference(Context context, AttributeSet attrs) {
super(context, attrs);
}
public SeekBarPreference(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
protected View onCreateView(ViewGroup parent) {
float scale = getContext().getResources().getDisplayMetrics().density;
RelativeLayout layout = new RelativeLayout(getContext());
RelativeLayout.LayoutParams textParams = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT, …Run Code Online (Sandbox Code Playgroud) 我有几个自定义首选项 - 一个显示当前所选颜色的样本,另一个显示缩略图.
我有一个匹配得很好的自定义布局,并且发现我可以通过使用android:textAppearance ="?android:attr/textAppearanceLarge"作为TextView的xml的一部分来使文本外观匹配.问题是,虽然这些看起来很好,但它们不一定是"官方"偏好使用的外观,因为某些设备上的颜色最终会出错.特别是我将我的应用程序移植到Nook Color,它在首选项屏幕上使用浅灰色背景和黑色文本颜色,而不是黑色背景/浅灰色文本.在这种情况下我的文字颜色保持不变,但我的布局的其余部分是相应的主题.
我真的不确定我应该做什么来让我的文字与'官方'主题相匹配.我应该使用obtainStyledAttributes并运行我的布局来设置东西吗?到目前为止我看到的使用它的教程真是令人费解,似乎必须有一个textAppearance或样式我可以在XML中设置来解决这个问题.
我想知道是否有办法改变
PreferenceCategory android:title="my name"
以编程方式和/或
ListPreference android:title="my name"
编程.
我创建了一个新的Xcode Preference Pane项目,我的目标是在System Preference应用程序中运行.我对项目的构建设置进行了一次修改:
我有一个nib文件和NSPreferencePane子类,但Xcode不允许我运行应用程序(只构建它,运行选项被禁用).
我的环境规格:
我正在尝试学习设置UI构建,我在android文档中看到首选项可以是Intent,但我现在想知道的是,Intent是否可以返回首选项值(例如通过启动文件选择的文件名)选择活动)?
或者,如果我想在我的首选项设置中选择文件或目录名称,是否需要构建自定义首选项视图?在任何地方有任何方便的例子吗?(似乎人们会对我做很多事情).
preference ×10
android ×9
categories ×1
cocoa ×1
coding-style ×1
datepicker ×1
default ×1
layout ×1
macos ×1
objective-c ×1
seekbar ×1
xcode ×1