我有一个Fragment
带有多个参数的构造函数.我的应用程序在开发期间工作正常,但在生产中我的用户有时会看到此崩溃:
android.support.v4.app.Fragment$InstantiationException: Unable to instantiate fragment
make sure class name exists, is public, and has an empty constructor that is public
Run Code Online (Sandbox Code Playgroud)
我可以创建一个空的构造函数,因为这个错误消息建议,但这对我没有意义,因为那时我将不得不调用一个单独的方法来完成设置Fragment
.
我很好奇为什么这种崩溃偶尔会发生.也许我使用ViewPager
不正确?我Fragment
自己实例化所有s并将它们保存在一个列表中Activity
.我不使用FragmentManager
事务,因为ViewPager
我看到的例子并不需要它,并且一切似乎都在开发期间工作.
我正在尝试在Kotlin中为我的Android应用程序进行UI测试.由于使用ActivityTestRule的新系统,我无法使其工作:它正确编译,并在运行时,我得到:
java.lang.Exception: The @Rule 'mActivityRule' must be public.
at org.junit.internal.runners.rules.RuleFieldValidator.addError(RuleFieldValidator.java:90)
at org.junit.internal.runners.rules.RuleFieldValidator.validatePublic(RuleFieldValidator.java:67)
at org.junit.internal.runners.rules.RuleFieldValidator.validateField(RuleFieldValidator.java:55)
at org.junit.internal.runners.rules.RuleFieldValidator.validate(RuleFieldValidator.java:50)
at org.junit.runners.BlockJUnit4ClassRunner.validateFields(BlockJUnit4ClassRunner.java:170)
at org.junit.runners.BlockJUnit4ClassRunner.collectInitializationErrors(BlockJUnit4ClassRunner.java:103)
at org.junit.runners.ParentRunner.validate(ParentRunner.java:344)
at org.junit.runners.ParentRunner.<init>(ParentRunner.java:74)
at org.junit.runners.BlockJUnit4ClassRunner.<init>(BlockJUnit4ClassRunner.java:55)
at android.support.test.internal.runner.junit4.AndroidJUnit4ClassRunner.<init>(AndroidJUnit4ClassRunner.java:38)
at android.support.test.runner.AndroidJUnit4.<init>(AndroidJUnit4.java:36)
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
at android.support.test.internal.runner.junit4.AndroidAnnotatedBuilder.buildAndroidRunner(AndroidAnnotatedBuilder.java:57)
at android.support.test.internal.runner.junit4.AndroidAnnotatedBuilder.runnerForClass(AndroidAnnotatedBuilder.java:45)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57)
at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:29)
at org.junit.runner.Computer.getRunner(Computer.java:38)
at org.junit.runner.Computer$1.runnerForClass(Computer.java:29)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57)
at org.junit.runners.model.RunnerBuilder.runners(RunnerBuilder.java:98)
at org.junit.runners.model.RunnerBuilder.runners(RunnerBuilder.java:84)
at org.junit.runners.Suite.<init>(Suite.java:79)
at org.junit.runner.Computer.getSuite(Computer.java:26)
at android.support.test.internal.runner.TestRequestBuilder.classes(TestRequestBuilder.java:691)
at android.support.test.internal.runner.TestRequestBuilder.build(TestRequestBuilder.java:654)
at android.support.test.runner.AndroidJUnitRunner.buildRequest(AndroidJUnitRunner.java:329)
at android.support.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:226)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1584)
Run Code Online (Sandbox Code Playgroud)
以下是我宣称的mActivityRule:
RunWith(javaClass<AndroidJUnit4>())
LargeTest
public class RadisTest {
Rule
public val mActivityRule: ActivityTestRule<MainActivity> = …
Run Code Online (Sandbox Code Playgroud) 我有一个回收站视图,可以在除三星以外的所有设备上完美运行.在三星,我明白了
java.lang.IndexOutOfBoundsException:检测到不一致.视图持有者适配器positionViewHolder无效
当我用另一个活动的回收者视图回到片段时.
适配器代码:
public class FeedRecyclerAdapter extends RecyclerView.Adapter<FeedRecyclerAdapter.MovieViewHolder> {
public static final String getUserPhoto = APIConstants.BASE_URL + APIConstants.PICTURE_PATH_SMALL;
Movie[] mMovies = null;
Context mContext = null;
Activity mActivity = null;
LinearLayoutManager mManager = null;
private Bus uiBus = null;
int mCountOfLikes = 0;
//Constructor
public FeedRecyclerAdapter(Movie[] movies, Context context, Activity activity,
LinearLayoutManager manager) {
mContext = context;
mActivity = activity;
mMovies = movies;
mManager = manager;
uiBus = BusProvider.getUIBusInstance();
}
public void setMoviesAndNotify(Movie[] movies, boolean movieIgnored) {
mMovies = …
Run Code Online (Sandbox Code Playgroud) 如果没有,是否有事实上的标准?基本上我正在编写命令行帮助文本,如下所示:
usage: app_name [options] required_input required_input2
options:
-a, --argument Does something
-b required Does something with "required"
-c, --command required Something else
-d [optlistitem1 optlistitem 2 ... ] Something with list
Run Code Online (Sandbox Code Playgroud)
我从基本上只是阅读各种工具的帮助文本中做到了这一点,但是有一个指南列表还是什么?例如,我使用方括号还是括号?如何使用间距?如果参数是一个列表怎么办?谢谢!
以明确的方式有谁能解释之间的实际差别java.lang.annotation.RetentionPolicy
常数SOURCE
,CLASS
和RUNTIME
?
我也不完全确定"保留注释"这个短语是什么意思.
前言:这不是关于如何在Android应用程序中使用构建类型和产品风格的问题.我理解所涉及的基本概念.这个问题更多的是试图了解应该在构建类型中指定哪个配置,应该在产品风格中指定哪个配置,以及是否实际需要区分.
本周,我一直在了解有关Android应用程序的gradle配置的更多信息.我最初认为我对构建类型和产品口味有很好的处理,但是我越深入到文档中,我就越发现两者之间的区别对我来说根本不清楚.
由于存在明确定义的层次结构(在某种意义上,构建类型中指定的属性优先于产品风格中指定的属性),我不明白为什么需要区分构建类型和产品风格.将所有属性和方法合并到产品风味DSL对象中,然后将构建类型视为(默认)风味维度是不是更好?
一些导致我困惑的具体例子:
该signingConfig
属性可以设置两种类型的建设和产品的口味......但minifyEnabled
(和,我想,shrinkResources
?)只能在构建类型进行配置.
applicationId
只能在产品风格中指定...并且applicationIdSuffix
只能在构建类型中指定!?
实际问题:
鉴于以上示例:构建类型与产品风格的角色之间是否存在明显区别?
如果是这样,了解它的最佳方法是什么?
如果没有,计划最终是将构建类型和产品风格合并到一个可配置的DSL对象中吗?
我正在使用电话从我的应用程序中的主要活动启动活动startActivityForResult(intent, ACTIVITY_TYPE)
,它们都在工作但只有一个.
这个,当被调用时,根据需要启动活动,但在日志中我可以看到它onActivityResult()
立即被触发.活动显示但RESULT_CANCELED
立即返回onActivityResult()
.
然后,我与活动互动,按下一个按钮,调用finish()
,并且onActivityResult()
不叫这个时候(因为很明显的结果已经返回).
这对任何人都有意义吗?以前有人见过这种行为吗?
我正在尝试安装pip3,但我没有运气.此外,我试过sudo install
,它没有用.我怎么能在我的Mac上安装pip3?
sudo easy_install pip3
Password:
Searching for pip3
Reading https://pypi.python.org/simple/pip3/
Couldn't find index page for 'pip3' (maybe misspelled?)
Scanning index of all packages (this may take a while)
Reading https://pypi.python.org/simple/
No local packages or download links found for pip3
error: Could not find suitable distribution for Requirement.parse('pip3')
Run Code Online (Sandbox Code Playgroud) 是否可以从AndroidManifest.xml访问BuildConfig值?
在我的build.gradle文件中,我有:
defaultConfig {
applicationId "com.compagny.product"
minSdkVersion 16
targetSdkVersion 21
versionCode 1
versionName "1.0"
// Facebook app id
buildConfigField "long", "FACEBOOK_APP_ID", FACEBOOK_APP_ID
}
Run Code Online (Sandbox Code Playgroud)
FACEBOOK_APP_ID
在我的gradle.properties文件中定义:
# Facebook identifier (app ID)
FACEBOOK_APP_ID=XXXXXXXXXX
Run Code Online (Sandbox Code Playgroud)
要在我的应用中使用Facebook连接,我必须将此行添加到我的AndroidManifest.xml:
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/applicationId"/>
Run Code Online (Sandbox Code Playgroud)
我想用gradle中定义@string/applicationId
的BuildConfig字段FACEBOOK_APP_ID
替换,如下所示:
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="FACEBOOK_APP_ID"/>
Run Code Online (Sandbox Code Playgroud)
使用BuildConfig可以吗?如果没有,我怎么能实现这个目标?
android ×6
java ×2
android-xml ×1
annotations ×1
command-line ×1
kotlin ×1
pip ×1
python ×1
python-3.x ×1
shell ×1
testing ×1