当前位置: 首页 > 知识库问答 >
问题:

我想改变按钮在打开和关闭时的角色

乐正涵忍
2023-03-14
public static PreferenceScreen getInstance(
        PreferenceActivity preferenceActivity,
        IsExcludedCallback isExcludedCallback,
        OnExcludedListener onExcludedListener,
        @StringRes int preferenceTitleResId,
        final @StringRes int preferenceScreenTitleResId
) {
    List<AppPojo> appList = KissApplication.getApplication(preferenceActivity).getDataHandler().getApplications();
    IconsHandler iconsHandler = KissApplication.getApplication(preferenceActivity).getIconsHandler();

    AppPojo[] apps = appList.toArray(new AppPojo[0]);
    Arrays.sort(apps, new PojoComparator());

    final PreferenceScreen excludedAppsScreen = preferenceActivity.getPreferenceManager().createPreferenceScreen(preferenceActivity);
    excludedAppsScreen.setTitle(preferenceTitleResId);

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        excludedAppsScreen.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
            @Override
            public boolean onPreferenceClick(Preference preference) {
                Toolbar toolbar = PreferenceScreenHelper.findToolbar(excludedAppsScreen);
                if(toolbar != null) {
                    toolbar.setTitle(preferenceScreenTitleResId);
                }
                return false;
            }
        });
    }

    for (AppPojo app : apps) {
        final ComponentName componentName = new ComponentName(app.packageName, app.activityName);

        final Drawable icon = iconsHandler.getDrawableIconForPackage(componentName, app.userHandle);

        final boolean showSummary = Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP
                || preferenceActivity.getResources().getConfiguration().screenWidthDp > 420;

        SwitchPreference pref = createExcludeAppSwitch(preferenceActivity, icon, app.getName(),
                app.getComponentName(), isExcludedCallback.isExcluded(app), app, showSummary, onExcludedListener);

        excludedAppsScreen.addPreference(pref);
    }

    return excludedAppsScreen;
}

private static SwitchPreference createExcludeAppSwitch(
        @NonNull Context context,
        @NonNull Drawable icon,
        String appName,
        String mainActivityName,
        boolean isExcluded,
        final @NonNull AppPojo app,
        boolean showSummary,
        final OnExcludedListener onExcludedListener
) {
    final SwitchPreference switchPreference = new SwitchPreference(context);
    switchPreference.setIcon(icon);
    switchPreference.setTitle(appName);
    if (showSummary) {
        switchPreference.setSummary(mainActivityName);
    }
    switchPreference.setChecked(isExcluded);
    switchPreference.setOnPreferenceChangeListener(
            new Preference.OnPreferenceChangeListener() {
                @Override
                public boolean onPreferenceChange(Preference preference, Object newValue) {
                    boolean becameExcluded = newValue != null && (boolean) newValue;

                    if(becameExcluded) {
                        onExcludedListener.onExcluded(app);
                    } else {
                        onExcludedListener.onIncluded(app);
                    }

                    return true;
                }
            }
    );
    return switchPreference;
}

/**
 * Use {@link #getInstance}
 */
private ExcludePreferenceScreen() {}

public interface IsExcludedCallback {
    boolean isExcluded(final @NonNull AppPojo app);
}

public interface OnExcludedListener {
    void onExcluded(final @NonNull AppPojo app);
    void onIncluded(final @NonNull AppPojo app);

}

}

此代码是启动器的代码。此代码连接应用程序和开关,当开关打开时,连接到开关的应用程序对用户是不可见的。(作为参考,开关连接到所有应用程序。)我想改变这一点,以便在开关关闭时应用程序对用户是不可见的。帮助

提前谢谢你

共有2个答案

郝修为
2023-03-14

@funky,你很有趣。y问题不清楚,如果你知道另一种提问方式来澄清,请展示你的专业知识并提供帮助,而不是发表评论。。。发表评论!如果你很无聊,那就去参加社交活动,玩得开心!

融焕
2023-03-14

你是说你有两个应用程序A和B,SwitchPreferene按钮正在监听A,你想在点击按钮时启动应用程序B?

 类似资料:
  • 在此处输入图像描述 我想在我的项目中使用开闭面板,就像所附的照片一样。我连续使用多个面板,有时我想最小化面板。我如何使用它,你能在java中添加类似代码的git链接吗?或者你知道这种类型的按钮和面板的名称吗?

  • '导出默认函数 评级(道具){ 常量 [悬停,setHover] =使用状态(假); // 检查悬停状态常量 [com, setCom] = use 状态(假); //检查点击状态 }'我有五个评级按钮,我想在单击另一个按钮时取消单击已单击的按钮。通过点击我的意思是,当我点击其中一个按钮时,他们的样式主要改变为背景颜色,现在我希望当有人按下另一个评级时,我希望以前点击的按钮的样式恢复正常,新按下的

  • 我目前正在从android站点上了解导航抽屉,我正在使用他们的示例http://developer.android.com/training/implementation-navigation/nav-drawer.html 我想要的是在中添加一个按钮,它将能够打开。我需要以编程方式完成,而不是XML。我怎么能那样做?

  • 我想在单击按钮后更改背景

  • 当用户在我的通知中单击一个按钮时,我正试图打开,而该应用程序仅在后台运行并提供服务。单击按钮时,这些行在类中被触发: 我已经检查过了,这些行被触发了,所以对按钮的点击做出反应没有问题,但是不会打开。 有什么建议吗?为什么这对我不起作用,我怎么能让它起作用? 我被要求提供更多的代码,因此在我的

  • 问题内容: 我是Swing的新手。 我要在单击按钮(完成按钮)后更新表格。我认为数据正确,但屏幕无法正常工作。 以下是我程序的说明 选中复选框,然后单击完成按钮 最底层应更改。 没有主 这是我的代码: 问题答案: 而不是这样做… 只需更新现有模型 或简单地 假设您要继续向表中添加新行。如果您要这样做,还可以先清除表,然后再向其中添加新行。 Swing的工作原理是MVC(模型-视图- 控制器 ),该