您的位置:首页 > 移动开发 > Android开发

android N 如何在Setting下添加一个按钮

2017-11-02 13:42 267 查看

在Settings下面添加菜单的方式有三种:

1、是继承Settings原有的父类Activity;

2、是继承Settings原有的父类SettingsPreferenceFragment;

3、是以apk的形式去添加。

具体的添加步骤

Android 7.0添加Setting按钮是通过在Androidmanifest.xml中配置intent-filter的Action,然后对指定的Action进行搜索获取需要显示的列表项。

下面我主要讲解前两种方式来添加按钮

1、在Settings下面添加一个按钮

Path : alps/packages/apps/Settings/AndroidManifest.xml

Code:

<activity android:name="Settings$UserGuideActivity"

android:label="@string/userguide"

android:icon="@drawable/ic_settings_quickguide"

<!--应用程序有一包名命名的任务栈 -->

android:taskAffinity="com.android.settings"

<!--在点击返回键回到Settings 而不是回到之前的task-->

android:parentActivityName="Settings">

<intent-filter>

<action android:name="android.intent.action.MAIN" />

<!--默认的category -->

<category android:name="android.intent.category.VOICE_LAUNCH" />

<!--默认的category -->

<category android:name="android.intent.category.DEFAULT" />

</intent-filter>

<!-- 1.SettingsActivity  通过该过滤器获取这个选项, 这个是必要有的,不然不会显示在设置菜单选项中。priority="6"表示选项的位置顺序数字由高到底排序 及同样的两个菜单,那个在前那个在后-->

<intent-filter android:priority="6">

<action android:name="com.android.settings.action.SETTINGS" />

</intent-filter>

<!-- 2.表示该菜单项在 personal的分类中 -->

<meta-data android:name="com.android.settings.category"

android:value="com.android.settings.category.personal" />

<!-- 3.表示启动的是一个fragment -->

<meta-data android:name="com.android.settings.FRAGMENT_CLASS"

android:value="com.android.settings.UserGuideSettings" />

<!--4.标示启动的是一个Activity-->

<meta-data android:name="com.android.settings.ACTIVITY_ACTION"

android:value="com.android.settings.UserGuideSettings" />

</activity>


2、添加相应的资源文件

Path :  alps/packages/apps/Settings/res/values/strings.xml

Code :  <string name="userguide">UserGuide</string>

上面代码是android:label="@string/userguide" 的字符串资源

Path : alps/packages/apps/Settings/src/com/android/settings/Settings.java

Code : public static class UserGuideActivity extends SettingsActivity { /* empty */ }

这个必须添加它与alps/packages/apps/Settings/AndroidManifest.xml文件中的<activity android:name="Settings$UserGuideActivity" 是对应的。当工程编译时它会自动生成UserGuideActivity.class文件。


3、添加相应的Fragment或者是Activity。

此文件要与alps/packages/apps/Settings/AndroidManifest.xml文件中的<meta-data android:name="com.android.settings.FRAGMENT_CLASS"
android:value="com.android.settings.UserGuideSettings" />或者是
meta-data android:name="com.android.settings.ACTIVITY_ACTION"
android:value="com.android.settings.UserGuideSettings" />
对应。


我以我之前开发的用户手册为例,添加Fragment文件UserGuideSettings。

Code:
package com.android.settings;
import android.content.Intent;
import android.view.View;
import android.annotation.TargetApi;
import android.os.Bundle;
import android.preference.PreferenceFragment;

public class UserGuideSettings extends PreferenceFragment{

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = new Intent();
intent.setAction("com.usermanual");
startActivity(intent);
}
}


以上是前两种方式去添加按钮,第三种方式笔者没有试过,如果你感兴趣也可以尝试尝试。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: