小编and*_*_su的帖子

片段在重新附加时创建/恢复重复的视图

我在6页ViewPagerOffscreenPageLimit=2(容易重现我的错误).
6页中的所有数据均来自服务器.在onCreateView,我向服务器发送请求,并在从服务器获取数据时刷新UI.

当我选择第一个选项卡并快速更改为最后一次时,某些寻呼机显示错误.那时我mMainLayout的片段中的字段不为空.

例如,ListView我的第一页有一个.当页面错误时,另一个ListView位于右侧ListView的顶部.当我尝试滚动ListView时,只移动了正确的一个(底部一个).

我知道我的响应监听器持有mMainLayout和其他一些视图的参考,我在方法onCreateView中创建了一个新的mMainLayout,我认为片段在重新连接/恢复时使用新的mMainLayout并丢弃旧的(或从容器中删除) .但是我错了.

我知道FragmentPagerAdapter附加/重新附加片段instantiateItem和分离destroyItem.适配器没有删除片段.适配器没有制作新片段.片段保持视图并查看状态本身.

我从容器中删除mMainLayout并将我的片段中的所有视图设置为null onDestroyView并且不保存任何内容onSaveInstanceState.但仍然很容易重现这个bug.

活动:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    registerReceiver(receiver, new IntentFilter("com.souyidai.intent.action.log_fragment"));
    FragmentManager fragmentManager = getFragmentManager();
    mResources = getResources();
    mMainPagerAdapter = new MainPagerAdapter(fragmentManager);
    mPager = (ViewPager) findViewById(R.id.pager);
    mPager.setAdapter(mMainPagerAdapter);
    mPager.setOffscreenPageLimit(CACHE_SIZE);
    mIndicator = (TabPageIndicator) findViewById(R.id.indicator);
    mIndicator.setViewPager(mPager);
    ...
} …
Run Code Online (Sandbox Code Playgroud)

android fragment android-fragments android-viewpager

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

rxjava 抛出 OnErrorNotImplementedException

Observable.create(new ObservableOnSubscribe())
    .subscribeOn(Schedulers.io())
    .compose(new ParserTransformer())
    .map()
    .subscribe()
Run Code Online (Sandbox Code Playgroud)

当我的 ObservableOnSubscribe 出现问题时,它会抛出异常(java.net.UnknownHostException ...)。

可观察订阅:

public void subscribe(ObservableEmitter oe) throws Exception {
    try{
        ...
    } catch {
        if (!oe.isDisposed()) {
            if (ex instanceof IOException) {
                throw new NetException(...); //sometimes, it make the app crash!
            }
        } else{
            ...
        }
    }
    oe.onComplete();
}
Run Code Online (Sandbox Code Playgroud)

这是日志:

D OkHttp: error: java.net.UnknownHostException
D OkHttp: oe.isDisposed: false
W System.err: io.reactivex.exceptions.OnErrorNotImplementedException: Unable to resolve host ******: No address associated with hostname
W System.err:   at io.reactivex.internal.functions.Functions$OnErrorMissingConsumer.accept(Functions.java:704)
W System.err:   at io.reactivex.internal.functions.Functions$OnErrorMissingConsumer.accept(Functions.java:701)
W …
Run Code Online (Sandbox Code Playgroud)

android rx-java2

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

关于匿名类的一个ClassCastException(java)

现在我得到一些如下的日志(log-1)

java.lang.ClassCastException: android.widget.LinearLayout$LayoutParams cannot be cast to ClassA$1
at android.widget.LinearLayout.measureHorizontal(LinearLayout.java:1010)
...
Run Code Online (Sandbox Code Playgroud)


1010行

final LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) obj.method();//line 1010
Run Code Online (Sandbox Code Playgroud)


我想,日志应该是这样的(log-2)

java.lang.ClassCastException: ClassA$1 cannot be cast to android.widget.LinearLayout$LayoutParams
Run Code Online (Sandbox Code Playgroud)

我想知道为什么我会得到log-1,是不是?
如果log-1是正确的,那么我如何编写代码来创建这样的异常?

ps:我知道ClassA $ 1是一个匿名类.
ps:我在猴子测试中得到了这个日志,而且很难重新出现

有人告诉我:

MyInterface my = ClassA$1;//$1 is an anonymous class which implements MyInterface
my.getClass().cast(lp);
Run Code Online (Sandbox Code Playgroud)

那么日志就像log-1
但为什么日志没有指出"cast"方法行?
我检查文件夹框架/ base/core,没有人调用方法"?java.lang.Class.cast(Object obj)"的
任何想法?

java android anonymous-class classcastexception monkey

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

有没有办法重用attr inputType?

我有一个自定义的ViewGroup,它包含一个EditText.我想在xml中为EditText设置inputType.但我不想重新定义输入类型.我怎样才能做到这一点?

TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.MyEditText);
a.getInt(android.R.attr.inputType, EditorInfo.TYPE_NULL);
Run Code Online (Sandbox Code Playgroud)

引起:java.lang.ArrayIndexOutOfBoundsException:

错误,因为我的ViewGroup中没有inputType attr.
我也试过这个:

int[] attrsReuse = new int[] { android.R.attr.inputType /* index 0 */};
Resources.Theme theme = context.getTheme();
TypedArray ta = theme.obtainStyledAttributes(attrsReuse);
Run Code Online (Sandbox Code Playgroud)

同样的错误.

有任何想法吗?谢谢!

android attr

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

使用DownloadManager下载HTTP / HTTPS URI

我在Google上搜索了一下。但这无济于事。

Android版本:4.0以上,
这是我的代码:

DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url));
Run Code Online (Sandbox Code Playgroud)

我的网址是https://static.test.com/downloads/xxx.apk

方案是https,但仍然出现错误:

02-10 11:18:23.710 E/AndroidRuntime( 7550): java.lang.RuntimeException: Unable to start service com.souyidai.investment.android.service.DownloadService@4344e5e0 with Intent { act=download_with_download_manager cmp=com.souyidai.investment.android/.service.DownloadService (has extras) }: java.lang.IllegalArgumentException: Can only download HTTP/HTTPS URIs:  https://static.test.com/downloads/xxx.apk
02-10 11:18:23.710 E/AndroidRuntime( 7550):     at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2711)
02-10 11:18:23.710 E/AndroidRuntime( 7550):     at android.app.ActivityThread.access$2100(ActivityThread.java:141)
02-10 11:18:23.710 E/AndroidRuntime( 7550):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1299)
02-10 11:18:23.710 E/AndroidRuntime( 7550):     at android.os.Handler.dispatchMessage(Handler.java:102)
02-10 11:18:23.710 E/AndroidRuntime( 7550):     at android.os.Looper.loop(Looper.java:136)
02-10 11:18:23.710 E/AndroidRuntime( 7550):     at android.app.ActivityThread.main(ActivityThread.java:5047)
02-10 11:18:23.710 E/AndroidRuntime( 7550):     at java.lang.reflect.Method.invokeNative(Native Method)
02-10 …
Run Code Online (Sandbox Code Playgroud)

https android

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

日历应用如何动态更改图标?(像素android牛轧糖)

我注意到日历应用每天都会更改条目图标。
我在Google上搜索并阅读了以下内容:
如何在Android中以编程方式更改应用程序图标?
使用activity-aliasshortcut可以更改应用程序图标。如果使用activity-alias方式,日历需要写31个activity-alias节点,太可怕了!如果使用shortcut,则应用需要两个,uses-permission并且当应用尝试添加快捷方式时,启动器可能会显示祝酒词。
我可以更改日历应用程序之类的图标吗?救命!

android

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

为什么我在Android设备上执行"pm"时会出现Segmentation fault错误?

我的设备:htcg14 rooted

我可以在模拟器上执行pm.

但我的设备不起作用.在我执行"su"之前,它工作正常.

shell@android:/ $ pm
usage: pm list packages [-f] [-d] [-e] [-s] [-e] [-u] [FILTER]
       pm list permission-groups
       pm list permissions [-g] [-f] [-d] [-u] [GROUP]
Run Code Online (Sandbox Code Playgroud)

但当我执行su,然后exec pm,我得到一个错误.为什么?

shell@android:/ $ su
su
shell@android:/ # pm
pm
[1] + Stopped (signal)     pm
shell@android:/ # pm
pm
[2] + Stopped (signal)     pm
[1] - Segmentation fault   pm
shell@android:/ # busybox pm
busybox pm
pm: applet not found
[2] + Segmentation fault   pm
1|shell@android:/ #
Run Code Online (Sandbox Code Playgroud)

我怎么能执行pm?救命...

android root segmentation-fault

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

如何修改已将其回显到屏幕上的行

当我们通过终端下载某些东西或安装软件时,我们总是会看到一个数字向我们显示进度。
号码变了,但还是在同一行。
我能在狂欢中做什么?

我是新人,求助!

bash

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

如何在android ICS上使用'exec app_process'启动jar

我有3个设备.

1.base on cm9(android 4.0.4).

2.htcg14(android 4.0.3)

3.moto me525基于miui(android 2.2)

他们都扎根了.

我在设备1和3的终端上执行以下代码,过程正常.但设备2,它不起作用.

su
export CLASSPATH=/sdcard/foo.jar
exec app_process /system/bin xx.xx.Test '$@'
Run Code Online (Sandbox Code Playgroud)

日志

W/dalvikvm(12364): Exception Ljava/lang/NullPointerException; thrown while initializing Ljava/lang/System;
W/dalvikvm(12364): Exception Ljava/lang/ExceptionInInitializerError; thrown while initializing Ljava/lang/ClassLoader$SystemClassLoader;
W/dalvikvm(12364): WARNING: system class loader is NULL (setting main ctxt)
W/dalvikvm(12364): Warning: tracked references remain post-initialization
W/dalvikvm(12364): MAIN reference table (0xf9a388) dump:
W/dalvikvm(12364):   Last 1 entries (of 1):
E/dalvikvm(12364): Class lookup Ljava/lang/Daemons; attempted with exception pending
W/dalvikvm(12364): Pending exception is:
I/dalvikvm(12364): java.lang.ExceptionInInitializerError:
I/dalvikvm(12364):     at java.lang.ClassLoader.getSystemClassLoader(ClassLoader.java:125) …
Run Code Online (Sandbox Code Playgroud)

android jar process classloader

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

没有找到 msversion 的 cmake vs 编译器:4 (windows7)

apppium-doctor 显示opencv4nodejs cannot be found. 所以我尝试opencv4nodejs使用npm -g install opencv4nodejs. 但我收到了这个错误:

info install opencv version: 3.4.6
info install with opencv contrib: yes
info install custom build flags:
info install
info install executing: git --version
info install git --version: git version 2.22.0.windows.1
info install
info install executing: cmake --version
info install cmake --version: cmake version 3.15.0
info install
info install CMake suite maintained and supported by Kitware (kitware.com/cmake).
info install
info find-msbuild failed to find vs2017 …
Run Code Online (Sandbox Code Playgroud)

.net cmake

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

startActivity 从 TileService 或所有活动都在后台时的视图(android)

前提:

  1. 安卓Q
  2. 我所有的活动都在后台

问题 1:

我在前台有一个视图,当用户单击该视图时,我尝试在 android Q 中启动一个 Activity。
这是我的代码。

Intent intent = new Intent(context, BorderActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

这是行不通的,也没有发生崩溃。我得到一些日志。

D ActivityTaskManagerServiceInjector:MIUILOG-权限被拒绝活动:意图......



问题2:

我有一个 TileService,当用户单击状态栏中的图标时,我尝试启动一个活动。

@TargetApi(Build.VERSION_CODES.N)
public class QuickSettingService extends TileService {
    @Override
    public void onClick() {
        Intent intent = new Intent(this, MyActivity.class);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivityAndCollapse(intent);
    }
}
Run Code Online (Sandbox Code Playgroud)

安卓清单

<service
    android:name=".service.QuickSettingService"
    android:permission="android.permission.BIND_QUICK_SETTINGS_TILE">
    <intent-filter>
        <action android:name="android.service.quicksettings.action.QS_TILE" />
    </intent-filter>
</service>
Run Code Online (Sandbox Code Playgroud)

我得到同样的错误:

D ActivityTaskManagerServiceInjector:MIUILOG-权限被拒绝活动:意图......

如何从后台启动Activity?

android

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

如何使用sed搜索每两行中的一个短语

我想在文档中搜索一个短语.
但也许这句话分为两行.
所以我想做的是:
搜索:
line1和line2
line2和line3
line3和line4
......

我是初学者,我想用sed练习.
那么,我怎样才能用sed做到这一点?
有任何想法吗?


这不起作用.

$ sed 'N;s/line2.line3/line23/' test.txt 
line1
line2
line3
line4
line5
Run Code Online (Sandbox Code Playgroud)

1)sed读取第一行和第二行,然后搜索.
2)sed读取第三行和第四行,然后搜索.
......
所以如果第2行和第3行中的短语,我会想念它.
我可以阅读上一行吗?


更新

感谢@Beta的帮助.

sed '$!N;s/line2.line3/line23/;P;D;'
Run Code Online (Sandbox Code Playgroud)

有用.但我还是有点困惑.
还有一些问题.

我已经阅读了手册.

n:读取模式空间中的下一行输入.
N:将下一行输入附加到模式空间中.
d:删除模式空间.开始下一个周期.
D:删除模式空间中的第一个嵌入换行符.开始下一个循环,但如果模式空间中仍有数据,则跳过读取输入.

sed -n 'N;P' test.txt 
Run Code Online (Sandbox Code Playgroud)

1)sed读取第一行和第二行,然后打印第一行.
2)sed清空其图案空间然后读取第三和第四行,然后打印第三行.
我对吗?

sed -n 'N;P;D' test.txt 
Run Code Online (Sandbox Code Playgroud)

1)sed读取第一行和第二行,然后打印第一行.
2)sed不要清空其模式空间然后读取第三行,然后打印第二行.
我对吗?

为什么"下一行"在上面2个命令中的COMMAND N和n中有不同的行为?



sed '$!N;s/line2.line3/line23/;P;D;'
Run Code Online (Sandbox Code Playgroud)

我认为"$!" 没有必要.

bash search sed

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

为循环中的变量赋值

这里有2段代码,值in $1是包含3行文本的文件名.

现在,我有一个问题.在第一段代码中,我无法从循环中获得"正确"的值,但在第二段代码中,我可以得到正确的结果.我不知道为什么.

如何让第一段代码得到正确的结果?

#!/bin/bash

count=0
cat "$1" | while read line
do
    count=$[ $count + 1 ]
done
echo "$count line(s) in all."

#-----------------------------------------

count2=0
for var in a b c
do
    count2=$[ $count2 + 1 ]
done
echo "$count2 line(s) in all."
Run Code Online (Sandbox Code Playgroud)

bash loops pipe

0
推荐指数
1
解决办法
238
查看次数