小编Raf*_*l T的帖子

防止触发WidgetProvider的onUpdate

我正在实现一个具有ConfigurationActivity的Widget,并且必须与Eclair(2.1)保持兼容.

有关AppWidgetProviders 方法的文档onUpdate明确指出:

....但是,如果您已声明配置Activity,则在用户添加App Widget时不会调用此方法,但会为后续更新调用此方法.配置Activity负责在配置完成时执行第一次更新.(请参阅下面的"创建应用程序小组件配置活动".)

不幸的是,这不是真的(至少对于带有JellyBean的Nexus S).事实上onUpdate, onCreate我的ConfigurationActivity触发器之前调用它.我想知道,如果在其他手机上有类似行为,并且是否可以阻止onUpdate我的提供商内部的通话?

我的解决方法是使用特定的AppWidgetId在我的WidgetConfigurationActivity中的SharedPreferences中存储一个标志.如果它不存在,我可以假设没有首先调用ConfigurationActivity.这有效,但在我的观点中真的很难看.如果我无法阻止onUpdate触发,是否有更好的解决方案?

android android-widget appwidgetprovider

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

在AndroidTest中写入外部存储

我想AndroidTest为某个应用编写一个涉及写入外部存储的应用,但是以某种方式我无法使其正常工作。(在Pixel2,Lg G6,Huawai P8等多种设备上进行测试)

因此,我简化了所有操作,只是为了测试是否可以完全写入外部存储。我尝试了GrantPermissionRule并在Granter上进行了编写,但没有成功。

我可能最终做了太多不必要的事情,所以这是我所做的:

  1. 在没有活动的情况下创建新项目 AndroidStudio
  2. 向清单添加了权限
  3. 加入AndroidManifestuses-permission标签
  4. 自己写 PermissionRequester
  5. 编写测试以尝试在/ sdcard / Download中添加文件夹并将其删除

以下是上面编号列表引用的摘录

2。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.company.android.testpermissions">
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="com.company.TestPermissions"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme" />
</manifest>
Run Code Online (Sandbox Code Playgroud)

3。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.company.android.testpermissions.test">
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

</manifest>
Run Code Online (Sandbox Code Playgroud)

也尝试过

<manifest package="com.company.android.testpermissions">...
Run Code Online (Sandbox Code Playgroud)

省略“测试”后缀

4。

public class MyPermissionRequester {

    public static final String TAG = MyPermissionRequester.class.getSimpleName();

    public static void request(String... permissions) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            UiAutomation auto = InstrumentationRegistry.getInstrumentation().getUiAutomation();
            String cmd = …
Run Code Online (Sandbox Code Playgroud)

java testing android android-permissions android-external-storage

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

如何使用签名([start,] stop [,step])实现python方法,即左侧的默认关键字参数

因为在python 3.X中,build-id range()函数不再返回一个列表而是一个可迭代的,一些旧的代码失败,因为我用它range()来方便地生成我需要的列表.

所以我尝试实现我自己的lrange功能:

def lrange(start = 0, stop, step = 1):
    ret = []
    while start < stop:
        ret.append(start)
        start += step
    return ret
Run Code Online (Sandbox Code Playgroud)

给我一个"非默认参数遵循默认参数"解释器错误.

如果我看看Python的范围()似乎是可能的.

我发布这个问题主要是因为我想知道是否/如何自己实现具有这种签名的功能

python arguments method-signature python-3.x

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

Java如何解决这种无类型泛型方法?

今天我遇到一个让我真的很奇怪的功能.因此,我们假设这个简单的结构用于清除.

public class Animal{

  public String getName(){ return null; }

}

public class Dog extends Animal{

  @Override
  public String getName(){
    //I'm aware that not any Dog's name is 'Pluto', but its just a Sample ;)
    return "Pluto"
  }

}

public class Cat extends Animal{

  protected final String mName;  

  public Cat(String name){
    mName = name;
  }

  @Override
  public String getName(){
     //cats have different names, because the internet loves cats
    return mName;
  }

  public void miao(){
    //just a dummy
  }
}
Run Code Online (Sandbox Code Playgroud)

现在将a指定 …

java generics casting weak-linking

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

从PreferenceActivity或PreferenceFragment中的资源添加特定的命名SharedPreferences

如果我有Preference-Activity-Fragment我可以提供preference.xml文件来构建我的文件PreferenceScreen并通过显示addPreferenceFromResource(R.xml.preference)

然后可以通过以下方式检索更改的值 PreferenceManager.getDefaultSharedPreferences(Context)

我只是想知道是否可以将片段的默认首选项设置为默认值。

我希望有一个PreferenceFragment能够将其首选项(通过xml提供)存储在我可以通过context.getSharedPreferences("customPrefName", Context.MODE_PRIVATE) 但可以在xml中找到的东西(例如,可以通过xml提供)中

<PreferenceScreen android:prefName="customPrefName">...
Run Code Online (Sandbox Code Playgroud)

android preferences sharedpreferences android-activity

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

我的正则表达式模式在Python中找到重复循环有什么问题?

我想匹配任何循环周期的字符串.就像这个数据:

3333333333333333333333333333333333333333 / 1 digit cycle(3)
1666666666666666666666666666666666666666 / 1 digit cycle(6)
1428571428571428571428571428571428571428 / 6 digit cycle(142857)
1111111111111111111111111111111111111111 / 1 digit cycle(1)
0909090909090909090909090909090909090909 / 2 digit cycle(09)
0834522467546323545411673445234655345222 / no cycle
0769230769230769230769230769230769230769 / 6 digit cycle(769230)
0714285714285714285714285714285714285714 / 6 digit cycle(714285)
0666666666666666666666666666666666666666 / 1 digit cycle(6)

我尝试过的模式"([0-9]+?)\1+"在其他语言(如VB或文本编辑器)中运行良好.我已将这些字符串存储在名为的列表中values.所以这是我的代码:

import re

#stuff to get values
pattern = re.compile("([0-9]+?)\1+")
for value in values:
    matchObj = pattern.search(value)
    print(matchObj) #-> None
    matchObj = pattern.findall(value)
    print(matchObj) #-> []
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?任何提示都表示赞赏.

python regex pattern-matching regex-negation

3
推荐指数
1
解决办法
1350
查看次数

如何检查整数数组中的android资源类型

我想知道是否有可能在这样的资源数组中确定android资源类型(如drawable,raw):

public static final int[] resourcesArray = {
R.drawable.image1,
R.raw.image2,
R.drawable.image3
};
Run Code Online (Sandbox Code Playgroud)

android drawable android-resources

3
推荐指数
1
解决办法
821
查看次数

为什么这种泛型返回类型的方法无效

我不明白.在java中,我允许将接口声明为方法的返回类型,如:

public List<String> get(){
    return new ArrayList<String>();
}
Run Code Online (Sandbox Code Playgroud)

如果我现在有一个接口可以说IC实现它的类,为什么我不允许这样定义:

public List<I> get(){
    return new ArrayList<C>();
}
Run Code Online (Sandbox Code Playgroud)

我知道创建ArrayList<I>并添加C它的解决方案,但我想知道为什么我不允许像上面那样声明它.我认为每一个C都是一个I虽然应该没问题.

java generics interface return-value

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

是"someString"等同于新的String("someString")?在java中

我总是认为在java中这样的表达式:

String tmp = "someString";
Run Code Online (Sandbox Code Playgroud)

只是某种"语法糖"

String tmp = new String("someString");
Run Code Online (Sandbox Code Playgroud)

正如我最近反编译我的java应用程序,我看到了所有的用法

public static final String SOME_IDENTIFIER = "SOME_VALUE";
Run Code Online (Sandbox Code Playgroud)

在代码中只用值替换,静态最终变量被剥离.

每次想要访问静态final时,都不会将这个新的String实例化吗?如何将其视为"编译器优化"?

java compiler-construction string instantiation compiler-optimization

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

找出是否可以使用`in`运算符

什么是最简单(也是最优雅)的方法,以确定in运算符是否可以在python中使用?如果我打开一个python shell并输入:

"" in 2
Run Code Online (Sandbox Code Playgroud)

它打印:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: argument of type 'int' is not iterable
Run Code Online (Sandbox Code Playgroud)

根据python-docs,一个iterable是:

容器.iter()

返回一个迭代器对象.该对象需要支持下面描述的迭代器协议.如果容器支持不同类型的迭代,则可以提供其他方法来专门请求这些迭代类型的迭代器.(支持多种迭代形式的对象的示例是支持广度优先和深度优先遍历的树结构.)此方法对应于Python/C API中Python对象的类型结构的tp_iter槽.

所以

hasattr([], "__iter__") and hasattr({}, "__iter__")
Run Code Online (Sandbox Code Playgroud)

true按预期返回,但是

hasattr("test_string", "__iter__")
Run Code Online (Sandbox Code Playgroud)

返回false.但我可以使用

"test" in "test_string"
Run Code Online (Sandbox Code Playgroud)

没有任何问题.

优雅我指的是不使用try-except解决方案

python containers iterator

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