从Android首选项活动跳转到活动
我有一个带有从Android首选项活动跳转到活动,android,android-intent,gradle,Android,Android Intent,Gradle,我有一个带有首选项活动的Android应用程序,其中一个首选项会启动我自己的一项活动(“关于”屏幕)。条目如下所示: <PreferenceScreen android:title="@string/about.Title"> <intent ... /> </PreferenceScreen> 另外(这一点很重要),我在调试构建中使用Gradle和.debug应用程序ID后缀。我在手机上安装了Play Store版本和debug版本 问题是:使
首选项活动的Android应用程序,其中一个首选项会启动我自己的一项活动(“关于”屏幕)。条目如下所示:
<PreferenceScreen android:title="@string/about.Title">
<intent ... />
</PreferenceScreen>
另外(这一点很重要),我在调试构建中使用Gradle和.debug
应用程序ID后缀。我在手机上安装了Play Store版本和debug版本
问题是:使用上面的意图是什么?我知道有两种选择,但都不起作用:
将android:action
意图与我自己的操作字符串一起使用,并使用
在我的清单中注册该操作字符串。
如果我在清单中使用了android:exported=“false”
,那么当安装了两个应用程序时,活动将无法加载到android 7.1上。(我得到“使用完成操作…没有应用程序可以执行此操作”。)如果只安装了一个(或者)
如果我使用android:exported=“true”
,那么我不仅要导出一个内部活动,而且当我点击首选项时,会在堆栈上推送两个活动实例(每个应用程序一个)。如果我只安装这两个应用中的一个,那么只会显示一个实例
android:targetPackage
和android:androidClass
方法,但是我不知道该为包使用什么,因为发布版本和调试版本(因为后缀)不同。一种解决方案是在调试资源文件夹中有一个preferences.xml
文件的副本,只更改包,但这很容易出现错误这一定是一个非常常见的模式!有什么想法吗?请按照以下步骤操作: 使用添加首选项后
addPreferencesFromResource(R.xml.preferences);
找到要设置onClick的首选项,并通过像
Preference pref = (Preference) findPreference("pref");
然后,您可以使用以下方法轻松设置其onClick:
pref.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
startActivity(new Intent(CurrentActivity.this, NextActivity.class));
return true;
}
});