我最近开始开发一个使用数据绑定的android应用程序.我现在的问题是因为这个错误我无法运行应用程序:
Error:(10) Error parsing XML: duplicate attribute
Run Code Online (Sandbox Code Playgroud)
使用数据绑定(我正在使用片段)在每个文件中发生错误.我用Google搜索了3个小时,我找不到解决方案.
的build.gradle:
apply plugin: 'com.android.application'
android {
dexOptions {
preDexLibraries = false
javaMaxHeapSize "2g"
}
compileSdkVersion 23
buildToolsVersion "23.0.3"
defaultConfig {
applicationId "at.blacktasty.schooltoolmobile"
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
dataBinding {
enabled = true
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile files('libs/eneter-messaging-android-7.0.1.jar')
compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com.android.support:design:23.4.0' …Run Code Online (Sandbox Code Playgroud) 这个问题在很多时候被问过,但我仍然找不到解决这个问题的好方法.
为什么我需要这样做?好吧,因为项目我和我的团队开发有iOS风格.
我尝试了什么?
那么有没有办法改变CardView的阴影颜色,只需对所有布局文件进行最少的编辑,并在视图外部绘制阴影,就像原始的CardView一样?
android shadow android-view android-cardview android-elevation
从撰写更新alpha-11到alpha-12(或beta-01)后,每当我打开具有撰写视图的活动或片段时,我都会遇到此崩溃。
我正在使用AppCompatActivitywhich implements LifecycleOwner,所以这非常奇怪。
java.lang.IllegalStateException: ViewTreeLifecycleOwner not found from DecorView@2da7146[MyActivity]
at androidx.compose.ui.platform.WindowRecomposer_androidKt.createLifecycleAwareViewTreeRecomposer(WindowRecomposer.android.kt:214)
at androidx.compose.ui.platform.WindowRecomposer_androidKt.access$createLifecycleAwareViewTreeRecomposer(WindowRecomposer.android.kt:1)
at androidx.compose.ui.platform.WindowRecomposerFactory$Companion$LifecycleAware$1.createRecomposer(WindowRecomposer.android.kt:98)
at androidx.compose.ui.platform.WindowRecomposerPolicy.createAndInstallWindowRecomposer$ui_release(WindowRecomposer.android.kt:151)
at androidx.compose.ui.platform.WindowRecomposer_androidKt.getWindowRecomposer(WindowRecomposer.android.kt:199)
at androidx.compose.ui.platform.AbstractComposeView.ensureCompositionCreated(ComposeView.android.kt:176)
at androidx.compose.ui.platform.AbstractComposeView.onAttachedToWindow(ComposeView.android.kt:207)
at android.view.View.dispatchAttachedToWindow(View.java:20014)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3589)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3596)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3596)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3596)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3596)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3596)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2223)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1888)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:8511)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:949)
at android.view.Choreographer.doCallbacks(Choreographer.java:761)
at android.view.Choreographer.doFrame(Choreographer.java:696)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:935)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7050)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:965)
Run Code Online (Sandbox Code Playgroud)
我的代码看起来很简单:
class MyActivity : …Run Code Online (Sandbox Code Playgroud) android android-view android-activity kotlin android-jetpack-compose
如何LoginActivity从拦截器(非活动类)开始?我已经尝试过Interceptor下面的代码()但不适合我.
拦截器
OkHttpClient client = new OkHttpClient.Builder().addInterceptor(new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
Request newRequest = chain.request().newBuilder()
.addHeader("Authorization", "Bearer " + auth_token_string)
.build();
Response response = chain.proceed(newRequest);
Log.d("MyApp", "Code : "+response.code());
if (response.code() == 401){
Intent intent = new Intent(SplashActivity.getContextOfApplication(), LoginActivity.class);
startActivity(intent);
finish(); //Not working
return response;
}
return chain.proceed(newRequest);
}
}).build();
Run Code Online (Sandbox Code Playgroud)
这是我正在使用的当前解决方案,有没有比这更好的解决方案?该解决方案必须在每次api呼叫时保持重复.
主要活动
call.enqueue(new Callback<Token>() {
@Override
public void onResponse(Call<Token> call, Response<Token> response) {
if(response.isSuccessful())
{
//success
}
else
{
Intent …Run Code Online (Sandbox Code Playgroud) 目前,我有以下底部登录按钮.
XML看起来像这样
<LinearLayout
android:background="?attr/welcomeBottomNavBarBackground"
android:orientation="horizontal"
android:id="@+id/sign_in_bottom_nav_bar"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true">
<Button
style="?android:attr/buttonBarButtonStyle"
android:id="@+id/sign_in_button"
android:layout_width="0dp"
android:width="0dp"
android:layout_weight="1.0"
android:layout_height="48dp"
android:gravity="center"
android:layout_gravity="center"
android:enabled="true"
android:textAllCaps="true"
android:text="@string/log_in" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
我想在按下按钮时删除按钮周围的填充(或者我应该将其称为边距?请参阅我最底部的p/s部分).
我试过了
<Button
...
...
android:minHeight="0dp"
android:minWidth="0dp" />
Run Code Online (Sandbox Code Playgroud)
它不起作用也没有效果.
我进一步尝试
<Button
...
...
android:background="@null"
android:minHeight="0dp"
android:minWidth="0dp" />
Run Code Online (Sandbox Code Playgroud)
按下时不再填充.然而,设计压制视觉效果的材料也将消失.
我可以知道在压制过程中删除按钮填充的最佳方法是什么,但保留材料设计按下的视觉效果?
我真的不知道是否应该称之为填充或边距.我希望实现的是,当我们按下底部区域时,按下视觉效果变化应覆盖整个100%底部区域(@+id/sign_in_bottom_nav_bar),而不是当前95%的底部区域.
我试图ViewModel通过它们的KClass类型将子类绑定到地图中:
@Module abstract class ViewModelModule {
@Binds @IntoMap @ViewModelKey(MyViewModel::class)
abstract fun bindsMyViewModel(viewModel: MyViewModel): ViewModel
@Binds abstract fun bindViewModelFactory(factory: ViewModelFactory): ViewModelProvider.Factory
}
Run Code Online (Sandbox Code Playgroud)
但我得到Dagger编译错误:
e: ~/Example/app/build/tmp/kapt3/stubs/debug/com/example/app/injection/AppComponent.java:5: error: [dagger.android.AndroidInjector.inject(T)] java.util.Map<kotlin.reflect.KClass<? extends android.arch.lifecycle.ViewModel>,? extends javax.inject.Provider<android.arch.lifecycle.ViewModel>> cannot be provided without an @Provides-annotated method.
e:
e: public abstract interface AppComponent {
e: ^
e: java.util.Map<kotlin.reflect.KClass<? extends android.arch.lifecycle.ViewModel>,? extends javax.inject.Provider<android.arch.lifecycle.ViewModel>> is injected at
e: com.example.app.ui.ViewModelFactory.<init>(creators)
e: com.example.app.ui.ViewModelFactory is injected at
e: com.example.app.injection.ViewModelModule.bindViewModelFactory(p0)
e: android.arch.lifecycle.ViewModelProvider.Factory is injected at
e: com.example.app.ui.MyFragment.setViewModelFactory(p0)
e: com.example.app.ui.MyFragment is injected …Run Code Online (Sandbox Code Playgroud) 我对Android特定模式的问题是,如果你使用他们的AndroidInjection类,除了使用Application Component之外,除了Activities/ Fragments/自定义视图/适配器之外,成员无法注入其他对象.这是因为你无法获得用于注入/ 的Subcomponent(AndroidInjector)的引用.这使得注入Dialogs(如果你使用).ActivitiesFragmentsDialogFragments
该AndroidInjection级似乎只支持Android核心类型.
我想dependency在gradle中打印最后一个版本.
我以这种方式添加了我的依赖:
compile 'test:test:+'
Run Code Online (Sandbox Code Playgroud)
现在我想打印我的依赖版本,因为我想知道我正在使用哪个版本.
我正在以这种方式使用它:
gradle dependencyInsight --configuration compile --dependency test:test
Run Code Online (Sandbox Code Playgroud)
但我的输出是这样的:
+--- test:test:+ -> project : (*)
Run Code Online (Sandbox Code Playgroud)
无论如何,我可以得到我的依赖的真实版本,而不是+?
我可以看到“Play Console”期望为“用户名/密码资源 ID”字段传递“旧” ID: android.view.View
我无法弄清楚如何为 Jetpack Compose 视图层次结构提供资源 ID。我怀疑它应该以某种方式与 相连Semantics,但我不确定 Play Console 是否支持 Jetpack Compose 视图。
好奇是否有人能够设置这个。
android prelaunch google-play-console android-jetpack android-jetpack-compose
我的问题是:我在RecyclerView内的其中一个视图上发生了视频流.
当用户滚动时,视图将被回收,其他摄像头会在该回收的视图持有者上开始自己的流式传输.这对用户界面不利,因为流式处理需要几秒钟才能启动.
我怎么能对RecyclerView说:"嘿嘿回收器,请不要回收那个确切的位置x并给出那个位置总是与你第一次给出的相同的观察者,而不是随机的一个"?
请有人帮帮我=(
android recycle android-layout android-viewholder android-recyclerview