我刚刚将Android Studio更新到版本3.2并按照说明使用androidx.
我一直在Fragment活动中使用Youtube片段,一切都运行得很好但是,在更新之后,这3条简单的行现在给我错误"无法解析方法'添加(...)'":
YouTubePlayerSupportFragment youTubePlayerFragment = YouTubePlayerSupportFragment.newInstance();
FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
transaction.add(R.id.youtube_fragment, youTubePlayerFragment).commit();
Run Code Online (Sandbox Code Playgroud)
...当我尝试使用"替换"而不是"添加"时,它说:"错误的第二个参数类型.发现:'com.google.android.youtube.player.YouTubePlayerSupportFragment',必需:'androidx.fragment.app .分段'"
...这让我觉得问题与新的AndroidX功能有关.
问题是add方法需要第二个类型的参数:
androidx.fragment.app.Fragment
Run Code Online (Sandbox Code Playgroud)
...但是YouTubePlayerSupportFragment会返回:
android.support.v4.app.Fragment
Run Code Online (Sandbox Code Playgroud)
有谁知道如何解决这个问题?有没有办法将"android.support.v4.app.Fragment"强制转换为"androidx.fragment.app.Fragment"?
我们目前正在通过Android应用程序项目迁移到Androidx命名空间。但是我注意到不仅名称空间似乎已更改。对于DialogPreference,现在也缺少以前使用的一些接口
例如,似乎缺少以下方法:onBindDialogView,showDialog,onDialogClosed。
由于我们使用其中一些方法来影响对话框的默认行为,因此我不清楚现在应如何实现此功能。例如,我们在关闭对话框之前验证输入,我们将值而不是sharedpreferences保存在数据库中,并向对话框中添加一些动态元素。
其他人是否已经遇到此问题并找到了解决方案?我错过了文档中的任何内容吗?我们可以/应该使用另一个概念吗?
可以使用Fragments而不是DialogPreference,但是对于少量内容(例如,用户可以从中选择的树项目列表)来说,这似乎给我带来了很多开销……
偶然我发现WebView的支持库是AndroidX的一部分:androidx.webkit:webkit:1.0.0
但是我找不到任何关于如何使用它的示例代码,JavaDoc也没有太大帮助:https://developer.android.com/reference/androidx/webkit/package-summary
这应该被开发人员使用还是内部库?
我刚刚创建了一个新的flutter项目,添加了一些插件,并且我将插件切换到了android x,因此我需要切换到android x。我尝试了所有不同的方法来迁移到android x,到目前为止,没有一种方法对我有用。现在,我什至不知道该怎么办,它是如此令人沮丧,为什么在自动创建新项目时不那么处理。可能在项目中使用离子。
在React Native项目上工作,但是突然间它停止工作并开始出现错误:
Manifest merger failed : Attribute application@appComponentFactory value=(android.support.v4.app.CoreComponentFactory) from [com.android.support:support-compat:28.0.0] AndroidManifest.xml:22:18-91
is also present at [androidx.core:core:1.0.0] AndroidManifest.xml:22:18-86 value=(androidx.core.app.CoreComponentFactory).
Suggestion: add ‘tools:replace=“android:appComponentFactory”’ to <application> element at AndroidManifest.xml:7:5-117 to override.
Run Code Online (Sandbox Code Playgroud)
我知道Google在28岁以后就完成了支持库类,并且我知道如何将整个项目从支持库类迁移到AndroidX类。
我的问题是:
有什么办法可以继续使用支持库类,而不是转移到AndroidX类?
如何解决这个问题?
我正在将Android P测试的依赖项迁移到androidx依赖项.由于一些不太清楚的原因,我的项目不再编译(并且我不会提供细节以避免明显的问题).我发现(通过gradlew dependencies)数据绑定使用"oldschool"依赖android.arch.lifecycle:runtime:1.0.3而不是androidx.lifecycle:lifecycle-runtime:2.0.0-beta01.我想这可能是一个原因.
知道如何强制使用新的包名/依赖项吗?
android android-support-library android-databinding android-architecture androidx
我已经按照Android开发人员的教程使用工作管理器结构在后台运行我的代码,但是当我尝试将我的工作人员排队时它不会运行,我收到以下错误:
2018-10-04 22:25:47.004 28669-28885/app.package.com.debug E/DefaultWorkerFactory: Could not instantiate app.package.com.MyWorker
java.lang.NoSuchMethodException: <init> []
at java.lang.Class.getConstructor0(Class.java:2320)
at java.lang.Class.getDeclaredConstructor(Class.java:2166)
at androidx.work.DefaultWorkerFactory.createWorker(DefaultWorkerFactory.java:58)
at androidx.work.impl.WorkerWrapper.runWorker(WorkerWrapper.java:180)
at androidx.work.impl.WorkerWrapper.run(WorkerWrapper.java:117)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
at java.lang.Thread.run(Thread.java:764)
2018-10-04 22:25:47.005 28669-28885/app.package.com.debug E/WorkerWrapper: Could for create Worker app.package.com.MyWorker
Run Code Online (Sandbox Code Playgroud)
我已经看到这个问题可能与worker上的默认构造函数有关但我已经使用了正确的构造函数而不是不推荐使用的默认函数.
我的工人被宣布为:
public class MyWorker extends Worker {
public MyWorker(@NonNull Context context, @NonNull WorkerParameters workerParams) {
super(context, workerParams);
}
@NonNull
@Override
public Result doWork() {
// Doesn't even get called
}
}
Run Code Online (Sandbox Code Playgroud)
它就像这样排队:
WorkManager workManager = WorkManager.getInstance();
if (myWorkerRequest == null) …Run Code Online (Sandbox Code Playgroud) 这个主题的小故事:应用程序只是在确认后用对话框更新点击行的值.在房间数据库上使用分页方案.
添加或删除项目时,将获取最新数据集并将其传递给submitList方法,然后可以看到所有更改并运行良好.
问题从那里开始,如果现有项目更新,则再次正确获取最新数据集并传递给submitList,但这次似乎没有变化.
当我调试DIFF_CALLBACK并抓住我的项目时areItemsTheSame,newHistory和oldHistory值是一样的!(怎么样!)
submitList方法中可能有任何错误?
初始化后,observe从房间中提取列表并传递给mHistoryAdapter.submitList(it).然后,如果我更新一个项目,观察再次被触发(我在param中看到更新的值it)并传递给submitList.
不幸的是,适配器不会改变......
mResolvedAddressViewModel = ViewModelProviders.of(this).get(ResolvedAddressViewModel::class.java)
mResolvedAddressViewModel.getAddresses(false).observe(this, Observer {
mHistoryAdapter.submitList(it)
})
Run Code Online (Sandbox Code Playgroud)
所有部件
模型
@Parcelize
@Entity
data class ResolvedAddress(
@PrimaryKey var id: String = UUID.randomUUID().toString(),
var requestedLat: Double = 0.0,
var requestedLon: Double = 0.0,
var requestedAddress: String = "",
var lat: Double,
var lon: Double,
var address: String,
var country: String,
var countryCode: String,
var city: …Run Code Online (Sandbox Code Playgroud) android android-architecture-components android-paging androidx
build.gradle(应用程序)
android {
compileSdkVersion 28
defaultConfig {
applicationId "com.example.todolistapp"
minSdkVersion 16
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'androidx.appcompat:appcompat:1.0.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
// Room
def room_version = "2.0.0"
implementation "androidx.room:room-runtime:$room_version"
kapt "androidx.room:room-compiler:$room_version"
// ViewModel and LiveData
def lifecycle_version = "2.0.0"
implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version"
kapt "androidx.lifecycle:lifecycle-compiler:$lifecycle_version"
// For Floating Action Button
implementation 'com.google.android.material:material:1.0.0'
}
Run Code Online (Sandbox Code Playgroud)
从依赖关系中可以看到,我没有导入回收视图Androidx库。
androidx.recyclerview:recyclerview:1.0.0
但是如下所示,我可以在布局(activity_main.xml)和MainActivity代码中轻松使用它。
<?xml version="1.0" …Run Code Online (Sandbox Code Playgroud) 是否可以在新的android viewpager2组件中启用-禁用刷卡功能?
androidx ×10
android ×9
android-architecture-components ×1
flutter ×1
react-native ×1
webview ×1
youtube ×1