我试图使用此代码片段获取Snackbar的Textview:
snackbarView.findViewById<TextView>(android.support.design.R.id.snackbar_text)
Run Code Online (Sandbox Code Playgroud)
但Android Studio无法解析设计库.
如何才能使此代码生效?
android textview android-support-library android-snackbar androidx
我正在开发一个项目,但今天构建不再有效。错误如下:
检查AAR元数据时发现2个问题:
依赖项“androidx.core:core:1.12.0-alpha01”需要依赖它的库和应用程序根据 Android API 的代号“UpsideDownCake”进行编译。
:app 目前是针对 android-33 编译的。
建议的操作:使用不同版本的依赖项“androidx.core:core:1.12.0-alpha01”,或者如果您打算尝试该预览版 SDK,则在 build.gradle 文件中将compileSdkPreview 设置为“UpsideDownCake”。
依赖项“androidx.core:core-ktx:1.12.0-alpha01”需要依赖它的库和应用程序根据 Android API 的代号“UpsideDownCake”进行编译。
:app 目前是针对 android-33 编译的。
建议的操作:使用不同版本的依赖项“androidx.core:core-ktx:1.12.0-alpha01”,或者如果您打算尝试该预览版 SDK,则在 build.gradle 文件中将compileSdkPreview 设置为“UpsideDownCake”。
根据我的研究,我了解到根据官方文档,错误消息的版本是昨天发布的。
以下是项目正在使用的 build.gradle 脚本。在我的 build.gradle 中,我有implementation 'androidx.core:core-ktx:1.9.0'. 我不明白为什么在构建阶段添加另一个版本以及为什么androidx.core:core:1.12.0-alpha01添加。
构建.gradle:
buildscript {
apply from: './dependencies.gradle'
repositories {
google()
mavenCentral()
jcenter()
gradlePluginPortal()
}
dependencies {
classpath 'com.android.tools.build:gradle:7.4.0'
classpath 'com.google.gms:google-services:4.3.14'
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$versions.kotlin_version"
classpath "com.google.dagger:hilt-android-gradle-plugin:$versions.hilt_android"
}
}
allprojects {
repositories {
google()
mavenCentral()
jcenter()
maven { url "https://maven.google.com" …Run Code Online (Sandbox Code Playgroud) 我正在为我的项目使用Androidx库,并且我想将字体设置为textview,所以当我将任何字体应用于任何Textview组件时,系统给我的
TypefaceCompatApi21Impl:java.lang.NoSuchMethodException java.lang.NoSuchMethodException:addFontWeightStyle [class java.lang.String,int,boolean]
这种类型的错误在运行时但应用程序没有崩溃.
那么如何克服这个错误呢.
注意:没有android x依赖项它将正常工作.
在我的代码下面:
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/menu_tv_title"
style="@style/font_work_sans_medium"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:maxLines="1"
android:ellipsize="end"
android:paddingEnd="@dimen/_12sdp"
android:paddingStart="@dimen/_12sdp"
android:textColor="@android:color/black"
android:textSize="17sp"
android:gravity="center"
tools:text="title"
tools:visibility="gone"/>
Run Code Online (Sandbox Code Playgroud)
这是风格
<style name="font_work_sans_medium" parent="@android:style/TextAppearance.Small">
<item name="android:fontFamily">@font/work_sans_medium</item>
</style>
Run Code Online (Sandbox Code Playgroud)
我也像这样以编程方式设置字体
var typeFace: Typeface? = ResourcesCompat.getFont(context, R.font.work_sans_bold)
getTitleView().setTypeface(typeFace, Typeface.NORMAL)
Run Code Online (Sandbox Code Playgroud)
仍然收到此错误
我正在开发新闻应用程序,但从Gradle控制台中收到以下错误
(androidx.core:core:1.0.1) and classes.jar (com.android.support:support-compat:28.0.0)
Duplicate class android.support.v4.app.INotificationSideChannel$Stub found in modules classes.jar (androidx.core:core:1.0.1) and classes.jar (com.android.support:support-compat:28.0.0)
Duplicate class android.support.v4.app.INotificationSideChannel$Stub$Proxy found in modules classes.jar (androidx.core:core:1.0.1) and classes.jar (com.android.support:support-compat:28.0.0)
Duplicate class android.support.v4.graphics.drawable.IconCompatParcelizer found in modules classes.jar (androidx.core:core:1.0.1) and classes.jar (com.android.support:support-compat:28.0.0)
Duplicate class android.support.v4.os.IResultReceiver found in modules classes.jar (androidx.core:core:1.0.1) and classes.jar (com.android.support:support-compat:28.0.0)
Duplicate class android.support.v4.os.IResultReceiver$Stub found in modules classes.jar (androidx.core:core:1.0.1) and classes.jar (com.android.support:support-compat:28.0.0)
Duplicate class android.support.v4.os.IResultReceiver$Stub$Proxy found in modules classes.jar (androidx.core:core:1.0.1) and classes.jar (com.android.support:support-compat:28.0.0)
Duplicate class android.support.v4.os.ResultReceiver found in modules classes.jar (androidx.core:core:1.0.1) and …Run Code Online (Sandbox Code Playgroud) 我最近更新了我的Android Studio(并且我非常确定Gradle版本),现在在尝试编译项目时遇到了很多错误。这是目前困扰我的那个:
Duplicate class android.support.v4.app.INotificationSideChannel found in modules classes.jar (androidx.core:core:1.0.1) and classes.jar (com.android.support:support-compat:26.1.0)
其次是很多类似的。
我尝试删除所有com.android.support有利于androidx的使用(有关使用替换事物的信息,请参见此处),但是com.android.support即使删除了库,库仍在使用中(一旦尝试再次编译,它们将被重新制作)。
这是我得到的全部错误的链接。
android libraries android-studio android-gradle-plugin androidx
我正在将我的应用程序迁移到androidx,我似乎无法让我的单元测试工作.我从Google的AndroidJunitRunnerSample中获取了示例,该示例已更新为使用新的androidx api.尝试运行测试时出现以下错误:
java.lang.Exception: Delegate runner 'androidx.test.internal.runner.junit4.AndroidJUnit4ClassRunner' for AndroidJUnit4 could not be loaded. Check your build configuration.
Run Code Online (Sandbox Code Playgroud)
这是我的模块build.gradle:
android {
defaultConfig {
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
}
dependencies {
// Test dependencies
androidTestImplementation 'androidx.test:core:1.0.0-beta02'
androidTestImplementation 'androidx.test.ext:junit:1.0.0-beta02'
androidTestImplementation 'androidx.test:runner:1.1.0-beta02'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-beta02'
androidTestImplementation "androidx.arch.core:core-testing:2.0.0"
androidTestImplementation 'androidx.room:room-testing:2.1.0-alpha01'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-beta02'
androidTestImplementation 'org.hamcrest:hamcrest-library:1.3'
}
Run Code Online (Sandbox Code Playgroud)
以下是我的测试结构:
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
import androidx.test.ext.junit.runners.AndroidJUnit4;
@RunWith(AndroidJUnit4.class)
public class EntityParcelTest {
@BeforeClass
public void createEntities() {
// Setup...
}
@Test
void someTest() {
// Testing here
}
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
使用Android Studio菜单选项Refactor - > Refactor to Androidx迁移到Androidx软件包后...
我收到以下错误:
Error inflating class androidx.constraintlayout.widget.ConstraintLayout
Run Code Online (Sandbox Code Playgroud) 我正在玩DrawerLayout,我遇到了一个问题.基本上有时当我从屏幕边缘滑动时,DrawerLayout会卡住,直到我将手指从屏幕上抬起(参见下面的屏幕截图)
我不确定是什么,我完全按照谷歌sdk的代码示例.有任何想法吗?

这是我在FragmentActivity中唯一拥有的东西:
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final String[] names =
getResources().getStringArray(R.array.nav_names);
ArrayAdapter<String> adapter =
new ArrayAdapter<String>(
getActionBar().getThemedContext(),
android.R.layout.simple_list_item_1, names);
final DrawerLayout drawer =
(DrawerLayout)findViewById(R.id.drawer_layout);
final ListView navList =
(ListView) findViewById(R.id.drawer);
navList.setAdapter(adapter);
navList.setOnItemClickListener(new AdapterView.OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> parent,
View view, final int pos, long id)
{
drawer.setDrawerListener(
new DrawerLayout.SimpleDrawerListener()
{
@Override
public void onDrawerClosed(View drawerView)
{
super.onDrawerClosed(drawerView);
}
});
drawer.closeDrawer(navList);
}
});
}
Run Code Online (Sandbox Code Playgroud)
编辑:我正在为此添加赏金,因为这是一个非常古老的问题,即使在今天仍然存在最新的Android-X(此处提供样本).以下是它的外观:
我在这个帖子上尝试了所有现有的解决方案,但都没有.如果有人有一个很好的解决方法(虽然仍然使用DrawerLayout或扩展它,或类似的东西),请提出一个有效的解决方案.
切换到AndroidX并收到已弃用:import androidx.test.InstrumentationRegistry
如果我下次导入:import androidx.test.platform.app.InstrumentationRegistry
我不能getContext()
例如:
val context = InstrumentationRegistry.getContext()
在build.gradle中:
androidTestImplementation 'androidx.test.ext:junit:1.0.0-beta02'
androidTestImplementation 'androidx.test:runner:1.1.0-beta02'
Run Code Online (Sandbox Code Playgroud) 所以我一直在尝试使用androidx.preference.PreferenceFragmentCompat创建一个设置活动,它一切正常.
但是由于某种原因,在偏好类别和偏好本身上都存在一些填充.我设法通过使用app:iconSpaceReserved ="false"来摆脱首选项的填充,但这似乎不适用于类别.
我已经尝试了所有各种主题,PreferenceThemeOverlay.v14.Material等但它们似乎没有什么区别
这是我的一切代码!
SettingsActivity.java
import android.os.Bundle;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
public class SettingsActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings);
Toolbar toolbar = findViewById(R.id.settings_toolbar);
setSupportActionBar(toolbar);
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setDisplayShowTitleEnabled(false);
}
}
}
Run Code Online (Sandbox Code Playgroud)
activity_settings.xml
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".SettingsActivity">
<androidx.appcompat.widget.Toolbar
android:id="@+id/settings_toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
style="@style/ToolbarTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/title_settings"
android:textColor="@color/font_dark_primary" />
</androidx.appcompat.widget.Toolbar>
<fragment
android:name="com.henrytwist8gmail.fullcart.SettingsTestFragment"
android:tag="settings_fragment"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@id/settings_toolbar" />
</androidx.constraintlayout.widget.ConstraintLayout>
Run Code Online (Sandbox Code Playgroud)
SettingsTestFragment.java
import android.os.Bundle; …Run Code Online (Sandbox Code Playgroud) android android-appcompat android-preferences preferencefragment androidx