小编Ale*_*lex的帖子

无法将 android.support.v7.widget.Toolbar 与 android.useAndroidX=true 一起使用

在 app/build.gradle 中:

implementation 'com.android.support:appcompat-v7:28.0.0'
Run Code Online (Sandbox Code Playgroud)

在我的活动中我使用

import android.support.v7.widget.Toolbar
Run Code Online (Sandbox Code Playgroud)

好的。这是找工作。

但是当我迁移到androidx我添加这个:

android.useAndroidX=true
android.enableJetifier=true
Run Code Online (Sandbox Code Playgroud)

结果现在我的活动没有编译错误:

import android.support.v7.widget.Toolbar;

Cannot resolve symbol 'v7'
Run Code Online (Sandbox Code Playgroud)

可以android.support.v7.widget.Toolbaranrdoidx.*包一起使用吗?

android android-appcompat android-support-library android-toolbar androidx

9
推荐指数
2
解决办法
2万
查看次数

kotlin const val只能在顶层或对象中使用Const'val'

在我的Kotlin项目中,我想在编译时声明常量:

所以我用这个:

@RunWith(AndroidJUnit4::class)
class TradersActivityTest {

    private lateinit var mockServer: MockWebServer
    private const val ONE_TR = "no_wallets.json" // error here
Run Code Online (Sandbox Code Playgroud)

但是我有编译时错误:

Const 'val' are only allowed on top level or in objects
Run Code Online (Sandbox Code Playgroud)

如何声明编译时间常数?

kotlin

8
推荐指数
1
解决办法
1507
查看次数

Android 8:尝试从空对象引用上的字段'android.content.Intent com.android.server.am.TaskRecord.intent'中读取;

Android 8.启动我的应用并立即最小化.几秒钟后我收到错误:

startActivity called from finishing ActivityRecord{7497c34 u0 com.myproject..dev/com.myproject.activity.SplashActivity t-1 f}; forcing Intent.FLAG_ACTIVITY_NEW_TASK for: Intent { cmp=com.myproject..dev/com.myproject.activity.RegistrationActivity }
Exception during pending activity launch pal=com.android.server.am.ActivityStackSupervisor$PendingActivityLaunch@a454565
java.lang.NullPointerException: Attempt to read from field 'android.content.Intent com.android.server.am.TaskRecord.intent' on a null object reference
 at com.android.server.am.ActivityStarter.computeSourceStack(ActivityStarter.java:1425)
 at com.android.server.am.ActivityStarter.startActivityUnchecked(ActivityStarter.java:983)
 at com.android.server.am.ActivityStarter.startActivity(ActivityStarter.java:953)
 at com.android.server.am.ActivityStarter.doPendingActivityLaunchesLocked(ActivityStarter.java:1964)
 at com.android.server.am.ActivityManagerService$MainHandler.handleMessage(ActivityManagerService.java:2055)
 at android.os.Handler.dispatchMessage(Handler.java:105)
 at android.os.Looper.loop(Looper.java:164)
 at android.os.HandlerThread.run(HandlerThread.java:65)
 at com.android.server.ServiceThread.run(ServiceThread.java:46)
Run Code Online (Sandbox Code Playgroud)

此错误仅适用于Android 8.在另一个Android版本中没有此错误.

在stacktrace中没有对特定行的引用(如您所见).仅限活动名称(SplashActivity).

这是我的SplashActivity:

public class SplashActivity extends AppCompatActivity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        startActivity(new Intent(this, RegistrationActivity.class)); …
Run Code Online (Sandbox Code Playgroud)

android

7
推荐指数
0
解决办法
1170
查看次数

Gradle:如果从Groovy转到Kotlin,会有什么好处?

我是Android开发人员。结果,我使用Gradle来构建android项目。我在Groovy上编写(大约2年)gradle脚本。结果,脚本非常紧凑,清晰并且易于支持。这很棒。

但是在新版本的Gradle中引入了新的语言-Kotlin。

我的问题是:如果我从Groovy切换到Kotlin,对于编写Gradle脚本有什么好处?

gradle

6
推荐指数
1
解决办法
1371
查看次数

deleteDirectory: java.lang.NoSuchMethodError: 没有虚拟方法 toPath

安卓工作室 3.4.2 安卓 6.0

dependencies {
    annotationProcessor "org.androidannotations:androidannotations:$AAVersion"
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.google.code.gson:gson:2.8.5'
    implementation 'commons-io:commons-io:2.6'
    implementation 'edu.vt.middleware:vt-password:3.1.2'
    implementation 'org.apache.commons:commons-collections4:4.1'

    implementation "org.androidannotations:androidannotations-api:$AAVersion"
Run Code Online (Sandbox Code Playgroud)

在android 6.0代码成功工作之前

 import java.io.File;
import java.io.IOException;
import java.lang.reflect.Type;
import java.util.*;
       import org.apache.commons.io.FileUtils;

private File myPhotoTempDir;
    if (myPhotoTempDir != null && myPhotoTempDir.exists()) {
                    FileUtils.deleteDirectory(myPhotoTempDir);
    }
Run Code Online (Sandbox Code Playgroud)

在 Android 6.0 上,我收到运行时错误:

FATAL EXCEPTION: main
Process: com.myproject.debug, PID: 7667
java.lang.NoSuchMethodError: No virtual method toPath()Ljava/nio/file/Path; in class Ljava/io/File; or its super classes (declaration of 'java.io.File' appears in /system/framework/core-libart.jar)
    at org.apache.commons.io.FileUtils.isSymlink(FileUtils.java:3107) …
Run Code Online (Sandbox Code Playgroud)

android apache-commons

5
推荐指数
3
解决办法
1569
查看次数

无法通过子模块的传递使用找到库

安卓工作室3.4.2

我有一个使用模块mytransport的主项目(应用程序) ,如下所示:

app/build.gradle

dependencies {
    annotationProcessor "org.androidannotations:androidannotations:$AAVersion"

    implementation fileTree(dir: 'libs', include: ['*.jar'])

    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    implementation('com.crashlytics.sdk.android:crashlytics:2.7.0@aar') { transitive = true; }
    implementation 'com.google.android.material:material:1.1.0-alpha07'
    implementation "org.androidannotations:androidannotations-api:$AAVersion"

    implementation project(':mytransport')

}
Run Code Online (Sandbox Code Playgroud)

mytransport/build.gradle中:

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.google.code.gson:gson:2.8.5'

}
Run Code Online (Sandbox Code Playgroud)

mytransport代码中我成功使用这样的代码:

MyProject\mytransport\src\main\java\com\mycompany\android\mytransport\util\MyUtil.java

片段:

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;

public class JSONUtil {
private static GsonBuilder gsonbuilder = new GsonBuilder();
Run Code Online (Sandbox Code Playgroud)

好的。

现在我想在主应用程序中使用 …

android gradle android-gradle-plugin android-gradle-3.0

4
推荐指数
1
解决办法
1534
查看次数

是否可以在一个 Java 文件中混合使用 Java 代码和 Kotlin 代码

安卓工作室 3.4.2

在 build.gradle 中:

buildscript {
    ext.kotlin_version = '1.3.41'
    repositories {
        google()
        jcenter()

    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.4.2'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}
Run Code Online (Sandbox Code Playgroud)

在 app/build.gradle 中:

buildscript {
    repositories {
        maven { url 'https://maven.fabric.io/public' }
    }

    dependencies {
        classpath 'io.fabric.tools:gradle:1.29.0'
    }
}

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'io.fabric'
Run Code Online (Sandbox Code Playgroud)

在我的 android 项目中,我将活动作为 java 类 - LoginActivity.java

导入 …

android kotlin kotlin-android-extensions

2
推荐指数
1
解决办法
574
查看次数

从画廊返回后,不在 Fragment 中调用 onActivityResult

在我的片段中,我从图库中选择照片

在 Manifest.xml 中

   <uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_GPS"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.CALL_PHONE"/>
<uses-permission android:name="android.permission.GET_TASKS"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
Run Code Online (Sandbox Code Playgroud)

之前?这是我的应用程序显示权限对话框。我按允许

在此处输入图片说明

public class EditProfileFragment extends androidx.fragment.app.Fragment {
 private void choosePhotoFromGallery() {
        Intent photoPickerIntent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
        photoPickerIntent.setType("image/*");
        startActivityForResult(photoPickerIntent, SELECT_PHOTO);
}
Run Code Online (Sandbox Code Playgroud)

但是方法

 @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (BuildConfig.DEBUG)
            Log.d(TAG, "onActivityResult_requestCode = " + requestCode + ", resultCode = " + resultCode + ", data = "
                    + AndroidUtil.intent2String(data)); …
Run Code Online (Sandbox Code Playgroud)

android android-permissions

0
推荐指数
1
解决办法
728
查看次数