有什么办法从偏好向额外的意图?
嗨,我从偏好屏幕启动活动。 活动由三个偏好共享。 我不知道我是否可以在xml中为这个活动设置额外的
<Preference android:key="action_1" android:title="@string/action_1_title" > <intent android:action="com.package.SHAREDACTION" > </intent> </Preference>
我不知道我能不能做点什么
<extras> <item android:name="" android:value=""/> </extras>
我所需要做的只是传递一个整数。 我可以采取不同的行动,并检查行动,而不是额外的。
由于你的附加组件不是常量,你应该把它们传递给java代码而不是xml。
Intent intent = new Intent( this, YourTargetActivity.class ); intent.putExtra( EXTRAS_KEY, extras ); yourPref.setIntent( intent );
我得到了答案,你可以像这样使用它:
<Preference android:key="xxx" android:title="xxx" android:summary="xxx"> <intent android:action="xxx" > <extra android:name="xxx" android:value="xxx" /> </intent> </Preference>
将preference添加到preference.xml文件中:
<Preference android:title="user" android:key="user"/>
然后你可以使用setOnPreferenceClickListener来启动额外的Intent。
Preference userButton = (Preference) findPreference("user"); userButton.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference arg0) { Intent intent = new Intent(getActivity(), YourTargetActivity.class); intent.putExtra(EXTRA, mUser); startActivity(intent); return true; } });
这里有一个文档描述的数据字段。
它在API演示应用程序中用于XML首选项,以便在“Intent首选项”示例中启动一个意图。
在preferences.xml中的相关示例xml:
<PreferenceScreen android:title="@string/title_intent_preference" android:summary="@string/summary_intent_preference"> <intent android:action="android.intent.action.VIEW" android:data="http://www.android.com" /> </PreferenceScreen>
也许这种方法可以为你工作?
为我工作。
<shortcut android:enabled="true" android:icon="@mipmap/xxx" android:shortcutDisabledMessage="@string/xxx" android:shortcutId="xxxx" android:shortcutLongLabel="xxx" android:shortcutShortLabel="xxx"> <intent android:action="android.intent.action.VIEW" android:targetClass="xxx" android:targetPackage="xxx"> <extra android:name="intent_name" android:value="true" /> </intent> </shortcut>
要发送电子邮件或在市场上率您需要使用类似的东西
<Preference android:title="@string/title_intent_preference" android:summary="@string/summary_intent_preference"> <intent android:action="android.intent.action.VIEW" android:data="market://details?id=com.your_package" /> </Preference> <Preference android:title="@string/title_intent_preference" android:summary="@string/summary_intent_preference"> <intent android:action="android.intent.action.VIEW" android:data="mailto:your_email@gmail.com" /> </Preference>
您可以使用
<PreferenceScreen android:title="@string/title_intent_preference" android:summary="@string/summary_intent_preference"> <intent android:action="android.intent.action.VIEW" android:data="hello world" /> </PreferenceScreen>
发送意图数据。 然后在您的活动中,只需使用:
getIntent().getDataString()
不是你的问题的答案,但非常相关。 也许有人会觉得它有用。 对于较新的API(> 11),您有一个首选项标题文件,您可以为其中一个标题定义自定义意图。 我试图添加一个自定义额外的头部和我find的解决scheme是这样的:
在你的preference-headers.xml中:
<header android:fragment="com.mypackage.MyPreference$Prefs1Fragment" android:title="Intent" android:summary="Launches an Intent."> </header>
在你的“MyPreference”类(扩展PreferenceActivity)中你有:
public static class Prefs1Fragment extends PreferenceFragment { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Intent intent = new Intent(getActivity(), MyTargetActivity.class); // set the desired extras, flags etc to the intent intent.putExtra("customExtra", "Something that I used to know"); // starting our target activity startActivity(intent); // ending the current activity, which is just a redirector to our end goal getActivity().finish(); } }
- java.lang.IllegalStateException:指定的子项已经有父项
- Android:在Activity生命周期中何时调用onCreateOptionsMenu?
- BOOT_COMPLETED不工作的Android
- 如何从多选列表视图中select项目
- 如何在Android应用程序中使用现有的数据库
- Android Studio 0.4复制在APK META-INF / LICENSE.txt中复制的文件
- android从文件path中绘制
- 查询Android数据库是否存在!
- 在使用Eclipse创build一个新的Android项目后,Eclipse中的SRC文件夹是空的(MainActivity类没有创build)