小编Jay*_*yer的帖子

双窗格首选项屏幕的问题

问题
将设备从单窗格纵向旋转PreferenceScreen到双窗格环境PreferenceScreen,导致横向仅显示为单窗格.查看标题屏幕时不会发生.

设置
仅适用于ICS及以上版本.我有一个PreferenceActivity负载preference-headers.每个标题链接一个Fragment,然后加载一个PreferenceScreen.相当运行的mil.

细节
一切运作良好,直到我注意到Android只会自动切换到某个屏幕的双窗格外观.经过一些研究,我从一篇Commonsware帖子中了解到,Android只会针对sw720dp这样做.如果你问我我有点浪费,因为许多设备def有足够的空间用于双窗格.所以我重写了onIsMultiPane()为w600dp和up返回true 的方法.工作就像一个魅力......有点儿.

给定一个设备,将在纵向和双窗格中显示单窗格; 以纵向查看标题并旋转到横向,工作正常.但是,如果选择一个标题并以纵向模式加载它的后续屏幕,则旋转到横向设备将保持单窗格而不是切换回双窗格.如果您然后返回导航到标题屏幕,它将返回双窗格外观,但它不会预先选择标题.因此,详细窗格保持空白.

这是预期的行为吗?无论如何要解决它吗?我也试过覆盖onIsHidingHeaders(),但这只会导致一切都显示为空白.

代码
偏好活动:

public class SettingsActivity extends PreferenceActivity {
@Override
public void onBuildHeaders(List<Header> target) {
    super.onBuildHeaders(target);
    loadHeadersFromResource(R.xml.preference, target);
}

@Override
public boolean onIsMultiPane() {
    return getResources().getBoolean(R.bool.pref_prefer_dual_pane);
}
}
Run Code Online (Sandbox Code Playgroud)


首选项标题片段:

public class ExpansionsFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    addPreferencesFromResource(R.xml.pref_expansions);
}

public static ExpansionsFragment newInstance() {
    ExpansionsFragment frag = new …
Run Code Online (Sandbox Code Playgroud)

java android preferenceactivity android-preferences android-fragments

36
推荐指数
1
解决办法
2181
查看次数

如何获取和取消PendingIntent?

我有一个alarmManager用于在特定时间向用户发送通知的内容.由于有多个警报,我有多个未决的意图,我正在创建并提供一个唯一的ID,但在某些情况下,我需要获取所有待处理的意图,然后取消它们,这样我就可以重置警报.我试过这样做,我似乎仍然无法做到这一点所以我有几个问题:

这是你如何正确获取和取消PendingIntent

Intent intent = new Intent(con, AppointmentNotificationReciever.class);
PendingIntent sender = PendingIntent.getBroadcast(con, id, intent,
        PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager am = (AlarmManager) con.getSystemService(Context.ALARM_SERVICE);
am.cancel(sender);
Run Code Online (Sandbox Code Playgroud)

意图是否需要与原始待定意图(附加内容和所有内容)完全匹配?

PendingIntent标志是否需要与原始待定意图的标志相匹配?

android alarmmanager android-intent android-pendingintent

23
推荐指数
1
解决办法
2万
查看次数

适用于Values文件夹的Android hdpi/mdpi/ldpi?

Android允许我们为drawable文件夹定义hdpi/mdpi/ldpi,以便考虑不同大小的屏幕/设备.我想知道是否可以为Values文件夹(甚至布局文件夹)应用相同的支持?原因是,我通常定义一个"sizes.xml"文件,其中包含我应用于边距和填充的标准dp大小.我也对文本的sp大小做同样的事情.我想根据手机dpi来调整这些值.

xml android dpi

21
推荐指数
2
解决办法
4万
查看次数

基于应用安装顺序的Android自定义权限失败

我的应用在Google Play上遇到问题.我有一个免费的应用程序,它使用自定义权限.此权限允许访问付费应用.这些付费应用程序充当"钥匙"并解锁免费应用程序中的功能.基本上,免费应用程序将尝试启动其中一个付费应用程序的意图.付费应用程序将执行一些操作并返回说明免费应用程序是否应该解锁功能.

根据应用安装的顺序出现问题.如果首先安装免费应用程序然后安装付费应用程序,则免费应用程序无法启动意图.返回权限拒绝.如果首先安装付费应用程序然后安装免费应用程序,免费应用程序可以启动意图没问题.重新启动设备和/或强制停止应用程序无法解决问题.我正在附上相关代码.有些东西告诉我,我做错了什么.

  • 免费App Manifest(相关代码):

    ...
    <uses-permission android:name="com.company.license.PERMISSION" />
    ...
    
    Run Code Online (Sandbox Code Playgroud)
  • 免费应用程序代码检查意图(相关代码):

    Intent KeyApp = new Intent("com.company.license.action.AUTH_1");
    KeyApp.putExtra("com.company.license.challenge", 1);
    
    //If free app is installed first, an exception is thrown for not having the proper permission. If paid app is installed first, no exception is thrown
    try {
        startActivityForResult(KeyApp, COMMING_FROM_KEYAPP);
    } catch (Exception e) {
        cancelStartUp();
    }
    
    Run Code Online (Sandbox Code Playgroud)
  • 付费应用清单(相关代码):

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.company.installer.1"
    ...
    <permission
        android:name="com.company.license.PERMISSION"
        android:icon="@drawable/icon"
        android:label="@string/app_name"
        android:protectionLevel="normal" >
    </permission>
    
    <application
        android:icon="@drawable/icon"
        android:label="@string/app_name"
        android:theme="@android:style/Theme.NoDisplay" >
    
        <activity
            android:name="com.company.license.auth"
            android:configChanges="keyboardHidden|orientation"
            android:exported="true"
            android:permission="com.company.license.PERMISSION"
            android:theme="@style/Theme.Transparent" >
            <intent-filter> …
    Run Code Online (Sandbox Code Playgroud)

java android android-manifest android-intent android-permissions

13
推荐指数
1
解决办法
3308
查看次数

Android Studio,Gradle错误.Prolog中不允许的内容

我一直在使用Android Studio和Ubuntu 13.10没问题.我决定更新到14.04,现在我无法使Android Studio工作.Gradle无法构建并继续说错误:Prolog中不允许内容.我所做的就是从头开始创建一个新项目.

  1. Ubuntu 14.04是从刚刚擦除的分区安装的
  2. 使用Android Studio v5.7,虽然我也尝试过v4.6
  3. 我安装了Oracle JDK并相应地设置了$ JAVA_HOME路径
  4. 我已经安装了gradle
  5. 我确保build.gradle有:

    依赖关系{classpath'com.android.tools.build:grad:0.9.+'}

  6. 我试过了gradle build clean.它也错了.

  7. 我在Android Studio中尝试过清理/重建项目.错误.

错误报告:

[Fatal Error] oss-parent-7.pom:2:1: Content is not allowed in prolog.
[Fatal Error] proguard-base-4.10.pom:2:1: Content is not allowed in prolog.
[Fatal Error] commons-compress-1.0.pom:2:1: Content is not allowed in prolog.
[Fatal Error] oss-parent-7.pom:2:1: Content is not allowed in prolog.
[Fatal Error] httpcore-4.1.pom:2:1: Content is not allowed in prolog.
[Fatal Error] commons-logging-1.1.1.pom:2:1: Content is not allowed in prolog.

FAILURE: Build failed …
Run Code Online (Sandbox Code Playgroud)

ubuntu android gradle android-studio

9
推荐指数
1
解决办法
2万
查看次数

Gradle:为什么plus运算符导致dupe字符串连接?

在我build.gradle在Android Studio中的文件中,我正在创建一个新的APK文件名,其中包含以下内容:

def newApkName = rootProject.name + "-" + variant.versionName + variant.buildType.versionNameSuffix
Run Code Online (Sandbox Code Playgroud)

这导致以下打印输出:app-2.2.0-debug-debug

但是,如果我执行以下操作:

def newApkName = rootProject.name + "-" + variant.versionName
newApkName.concat(variant.buildType.versionNameSuffix)
Run Code Online (Sandbox Code Playgroud)

它正确打印出来:app-2.2.0-debug

我是gradle的新手,所以我很困惑为什么使用plus运算符进行连接会导致出现欺骗字符串...其中使用concat方法不会.对此为何的见解?

android gradle android-studio

7
推荐指数
1
解决办法
8592
查看次数

如何使用EditText,IME Action,textMultiLine来为JellyBean工作

我遇到了相当难题,但未找到解决方案.显然,JellyBean会改变IME操作的处理方式.我发现很多网站提供的解决方案确实有效,但仅适用于单行内容EditTexts.示例:Stackoverflow:onEditorAction

我的EditText小部件工作得很好,直到JellyBean.在用户点击"完成"(返回)键之前,它将正确地自动换行.然后它会相应地捕获事件OnEditorActionListener并进行处理.我已尝试使用以下XML属性更改设置的多种变体无效:

  • singleLined
  • scrollHorizo​​ntally
  • 输入类型
  • imeOptions
  • 线

我只能在没有onEditorAction事件的情况下进行自动换行,或者在onEditorAction事件触发时没有自动换行.如何为JellyBean提供自动换行和处理软键盘输入键?

更新1:包括请求的代码.请注意,现在它是如何适用于除JellyBean之外的所有平台.正如我之前所说,尝试多种不同的XML设置无济于事.

更新2:管理以获取运行JellyBean 4.1.1的Asus Transformer.工作良好.那么这可能是设备特定的错误?我的另一个JellyBean设备是运行4.1.2的Nexus 7.有人可以用其他设备验证吗?

码:

private class OnMyEditorActionListener implements OnEditorActionListener {
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        if (actionId == EditorInfo.IME_ACTION_GO) {
            doSomething();
            return true;
        }
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)
<EditText
    android:id="@+id/editbox_box_et"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@null"
    android:gravity="top|center_horizontal"
    android:imeOptions="actionGo"
    android:inputType="textMultiLine|textNoSuggestions"
    android:padding="@dimen/spacing_half"
    android:textSize="24sp" >
</EditText>
Run Code Online (Sandbox Code Playgroud)

android ime android-widget android-4.2-jelly-bean

6
推荐指数
2
解决办法
2万
查看次数

将View的触摸位置转换为WebView的HTML屏幕位置

我有一个WebView在assets文件夹中显示本地HTML页面.这WebView是一个更大的布局的一部分Activity.我正在尝试允许用户将文本从EditText窗口小部件拖动到窗口中的输入元素WebView.除了将拖动侦听器接收的屏幕坐标转换为使用的屏幕坐标外,一切都很好document.elementFromPoint.他们不匹配.它会继续将文本放入输入框中,这些输入框比用户手指更低.任何帮助,将不胜感激.警告:我的javascript知识非常可怜.

基本流程:

  1. WebView的onDrag事件捕获ACTION_DROP事件.
  2. 事件的x,y位置传递给Javascript函数
  3. Javascript函数根据点查找元素并更新值

在我的活动中:

private class OnWebViewDragListener implements OnDragListener {
    public boolean onDrag(View v, DragEvent event) {
        switch (event.getAction()) {
            case DragEvent.ACTION_DROP:
                String dropText = event.getClipData().getItemAt(0).getText().toString();
                mJavaScript._dropText(mWebView, dropText, event.getX(), event.getY());
                return true;

            default:
                break;
        }

        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

Javascript包装器:

public void _dropText(WebView wv, String text, float x, float y) {
    wv.loadUrl("javascript:dropText('" + text + "', " + x + ", " + y + ")"); …
Run Code Online (Sandbox Code Playgroud)

javascript android drag-and-drop

6
推荐指数
1
解决办法
2521
查看次数

请求,请求2和请求3之间有什么区别?

requests经常使用。最近,我发现还有requests2一个requests3

虽然有一个页面简短地提到了即将发生的事情requests3,但我仍无法确定到底requests2是什么以及为什么要使用它requests。我假设2意味着它是一个更新的更好版本,也许吗?

要求2

  • 有一个更好看的pypi.org页面
  • 看起来它具有相同但较旧的更改 requests

否则我找不到其他信息。可能有人解释之间的差异requests,并requests2和完整性的缘故requests3

python python-requests

5
推荐指数
1
解决办法
881
查看次数

将Gitlab CI触发器卷曲转换为Powershell Invoke-RestMethod

有谁知道是否可以curl使用以下命令将用于触发Gitlab-CI中的构建的命令转换为Powershell等效项Invoke-RestMethod

示例curl命令:

curl --request POST \
  --form token=TOKEN \
  --form ref=master \
  --form "variables[UPLOAD_TO_S3]=true" \
  https://gitlab.example.com/api/v3/projects/9/trigger/builds
Run Code Online (Sandbox Code Playgroud)

这取自Gitlab的文档页面。

我发现了很多关于将curl脚本转换为Powershell的帖子,但是我并没有运气。这是我引用的一些链接:

任何帮助,将不胜感激。

powershell curl gitlab

4
推荐指数
1
解决办法
895
查看次数

适用于MAC OS X上的Eclipse CDT的LLVM-Clang

无法通过Eclipse获得LLVM-Clang编译.只是在CDT默认的hello world示例上测试它.它给出了以下错误:

clang ++ -O0 -emit-llvm -g3 -Wall -c -fmessage-length = 0 -o src/Test.bc ../src/Test.cpp
llvm -ld -v -native -o test src/Test.bc
Internal构建器:无法运行程序"llvm-ld":未知原因
错误:在PATH中找不到程序"llvm-ld"

PATH = [/ usr/bin:/ bin:/ usr/sbin:/ sbin]
发生构建错误,构建停止

我不确定为什么它抱怨PATH,因为我可以通过终端调用clang ++和llvm-ld命令就好了.事实上,当我通过终端输入上述内容时,会出现以下错误.

clang ++ -O0 -emit-llvm -g3 -Wall -c -fmessage-length = 0 -o src/Test.bc ../src/Test.cpp
llvm -ld -v -native -o Test Debug/src/Test. bc
链接bitcode文件'Debug/src/Test.bc'llvm -ld
:错误:无法加载文件'Debug/src/Test.bc':无法加载Bitcode文件'Debug/src/Test.bc':未知类型在类型表中

那么它可能不是Eclipse的问题?从来没有太多的命令行编译人,所以我的知识有限.

我正在跑狮子.通过XCode命令行工具安装clang.通过Macports安装LLVM.必须手动设置我的LLVM路径.

Clang -v说3.1
LLVM是v3.0

compiler-errors eclipse-cdt llvm-clang osx-lion

2
推荐指数
1
解决办法
5601
查看次数

Unity-Monodevelop变量同步问题

我在主摄像头上添加了一个C#脚本.我定义了一个MyNumber如下变量-

public int MyNumber = 9;
Run Code Online (Sandbox Code Playgroud)

我的问题是当我改变变量的值时; 在Unity Editor中,它保持不变.例如,如果我使用Monodevelop将C#脚本文件中的值从9更改为19,则Unity编辑器将继续显示My Number = 9而不是19; 除非我重置脚本文件.

请检查截图: 变量未正确同步

c# monodevelop unity-game-engine unityscript unity5

2
推荐指数
1
解决办法
59
查看次数