我在6页ViewPager和OffscreenPageLimit=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) 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) 现在我得到一些如下的日志(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)"的
任何想法?
我有一个自定义的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)
同样的错误.
有任何想法吗?谢谢!
我在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) 我注意到日历应用每天都会更改条目图标。
我在Google上搜索并阅读了以下内容:
如何在Android中以编程方式更改应用程序图标?
使用activity-alias或shortcut可以更改应用程序图标。如果使用activity-alias方式,日历需要写31个activity-alias节点,太可怕了!如果使用shortcut,则应用需要两个,uses-permission并且当应用尝试添加快捷方式时,启动器可能会显示祝酒词。
我可以更改日历应用程序之类的图标吗?救命!
我的设备: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?救命...
当我们通过终端下载某些东西或安装软件时,我们总是会看到一个数字向我们显示进度。
号码变了,但还是在同一行。
我能在狂欢中做什么?
我是新人,求助!
我有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) 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) 前提:
问题 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?
我想在文档中搜索一个短语.
但也许这句话分为两行.
所以我想做的是:
搜索:
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)
我认为"$!" 没有必要.
这里有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)