小编Man*_*ddy的帖子

如何使用保存实例状态保存Android Activity状态?

我一直在研究Android SDK平台,有点不清楚如何保存应用程序的状态.因此,考虑到'Hello,Android'示例的这种小型重新设计:

package com.android.hello;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class HelloAndroid extends Activity {

  private TextView mTextView = null;

  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    mTextView = new TextView(this);

    if (savedInstanceState == null) {
       mTextView.setText("Welcome to HelloAndroid!");
    } else {
       mTextView.setText("Welcome back.");
    }

    setContentView(mTextView);
  }
}
Run Code Online (Sandbox Code Playgroud)

我认为这对于最简单的情况就足够了,但无论我如何远离应用程序,它总是以第一条消息响应.

我确信解决方案就像覆盖onPause或类似的那样简单,但我已经在文档中捅了大约30分钟左右,并且没有找到任何明显的东西.

android application-state android-activity

2538
推荐指数
26
解决办法
74万
查看次数

Android Studio 数据库检查器不显示任何数据库

我在 Android studio 4.1 beta 1 上。我在我的设备上安装了我的应用程序并打开了数据库检查器,但没有显示任何内容。我应该做点别的吗?

在此处输入图片说明

我正在使用房间数据库。我可以看到设备上的数据库。为什么数据库没有显示在数据库检查器中?

android android-studio

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

如何打开 jetpack DataStore 文件 (.preferences_pb)

我正在尝试新的 jetpack DataStore库。我使用库保存了数据。这在应用程序数据目录 (/data/data/my.package.name/files/datastore/settings.preferences_pb) 中创建了一个文件settings.preferences_pbsetting是我给的文件名。使用文本查看器无法正确显示数据。我可以辨认出键名,但值是垃圾。如何打开该文件并查看它?

这是文件settings.preferences_pb的驱动器链接

android android-jetpack android-jetpack-datastore

14
推荐指数
2
解决办法
6333
查看次数

当应用程序在后台时 Android 监听器停止运行

我正在开发一个应用程序,该应用程序将检测蓝牙信号(Sensoro 智能信标设备)并打开活动。但我希望应用程序仍然能够检测到信号,即使应用程序处于后台甚至被杀死。我使用了前台服务,当我打开应用程序并在活动之间移动时,它会检测到信号,但是当将应用程序发送到后台并打开其他应用程序时,侦听器会停止,尽管服务仍在工作。我正在打印日志。System.out.println("Sensoro 2" );即使我终止应用程序或打开另一个应用程序,也会继续打印。但是 BeaconManagerListener 中的打印日志不起作用。我尝试使用后台服务,但它也不起作用。您能否告知,当应用程序在后台或被杀死时,是否有一种方法可以使侦听器在服务中工作?这是服务代码:

public class MyService extends Service {
    public static final String CHANNEL_ID = "ForegroundServiceChannel";
    int service_timer=0;
    Timer timer = new Timer();
    SensoroManager sensoroManager;
    @Override
    public void onCreate() {
        super.onCreate();
    }
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        sensoroManager = SensoroManager.getInstance(MyService.this);
        String input = intent.getStringExtra("inputExtra");
        System.out.println("Sensoro 2" );
        createNotificationChannel();
        Intent notificationIntent = new Intent(this, MainActivity.class);
        PendingIntent pendingIntent = PendingIntent.getActivity(this,
                0, notificationIntent, 0);
        Notification notification = new NotificationCompat.Builder(this, CHANNEL_ID)
                .setContentTitle("Foreground Service")
                .setContentText(input) …
Run Code Online (Sandbox Code Playgroud)

android android-bluetooth

10
推荐指数
1
解决办法
918
查看次数

我们应该在targetSDK 28中使用哪些支持库版本?

它说,我正在阅读这篇文章update your project's compileSdkVersion and targetSdkVersion to API 28.所以我做了但支持库给出了错误,如支持库不应该使用不同于compileSdk版本的版本

在此输入图像描述

我尝试将它更新到28.0.0,但它没有用,并说

Failed to resolve: com.android.support:appcompat-v7:28.0.0

我知道它仍然可以使用27.1.1但是正确的版本是什么,不会给出红色下划线?

编辑

build.gradle文件

apply plugin: 'com.android.application'

apply plugin: 'kotlin-android'

apply plugin: 'kotlin-android-extensions'

apply plugin: 'kotlin-kapt'   

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "in.eightfolds.safety"
        minSdkVersion 16
        targetSdkVersion 28
        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
    }
}

ext.support_version = '28.0.0'
ext.room_version = "1.1.1"
ext.lifecycle_version = "1.1.1" …
Run Code Online (Sandbox Code Playgroud)

android android-sdk-tools android-9.0-pie

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

导航组件,检查返回堆栈中是否存在片段

使用导航组件时如何检查返回堆栈中是否存在片段?

我能想到的一件事是尝试 NavBackStackEntry使用

val backStackEntry=findNavController().getBackStackEntry(R.id.courseTrackFeedbackFragment)
Run Code Online (Sandbox Code Playgroud)

在文档中,它说如果目标不在返回堆栈上,这将抛出 IllegalArgumentException 。但这看起来像是一个黑客行为,有更好的方法吗?

android android-jetpack android-architecture-navigation

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

java.lang.ClassNotFoundException:在路径上找不到类:DexPathList,更新sdk后

大家好我的应用程序一切正常,直到昨天,我昨天更新了我的SDK,它开始给出错误,它首先给出了一个错误

没有找到值v24的资源....

像这样的一些东西我搜索并通过更改build.gradle中的以下行来解决它

compileSdkVersion 25
buildToolsVersion '25.0.2'
Run Code Online (Sandbox Code Playgroud)

现在,错误消失了,它更高的Android版本7.1.1中运行完全正常 但是当我在较低版本的android中运行它给出以下错误

E/AndroidRuntime: FATAL EXCEPTION: main
                  Process: com.wowio.ebookreader, PID: 15469
                  java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.wowio.ebookreader/com.eminosoft.ebookread.activity.SplashScreenActivity}: java.lang.ClassNotFoundException: Didn't find class "com.eminosoft.ebookread.activity.SplashScreenActivity" on path: DexPathList[[zip file "/data/app/com.wowio.ebookreader-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.wowio.ebookreader-1, /vendor/lib, /system/lib]]
                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
                      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2378)
                      at android.app.ActivityThread.access$800(ActivityThread.java:155)
                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1244)
                      at android.os.Handler.dispatchMessage(Handler.java:102)
                      at android.os.Looper.loop(Looper.java:136)
                      at android.app.ActivityThread.main(ActivityThread.java:5433)
                      at java.lang.reflect.Method.invokeNative(Native Method)
                      at java.lang.reflect.Method.invoke(Method.java:515)
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268)
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
                      at dalvik.system.NativeStart.main(Native Method)
                   Caused by: java.lang.ClassNotFoundException: Didn't find class "com.eminosoft.ebookread.activity.SplashScreenActivity" on path: DexPathList[[zip file "/data/app/com.wowio.ebookreader-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.wowio.ebookreader-1, …
Run Code Online (Sandbox Code Playgroud)

sdk android classnotfoundexception android-studio

7
推荐指数
1
解决办法
9071
查看次数

Android Studio:如何在布局xml文件中自动添加结束/结束标签

在哪里可以找到在android studio中自动在布局中添加结束标记的设置。假设如果我从建议中选择TextView,它应该使用以下命令自动将其关闭/>

在此处输入图片说明

以前,我曾经自动获取结束标签,但是在更新Android Studio之后,我没有得到它。我尝试在“编辑器>代码样式” >XML中搜索,但未找到任何相关设置

在此处输入图片说明

我在Android Studio 3.5 RC 3上

android intellij-idea android-studio

7
推荐指数
1
解决办法
481
查看次数

Volley Post请求,在Json数组请求中发送Json对象

简而言之,我想{"Id":7,"Name":"MyName"}使用 Volley Post 请求将此数据发送到服务器。

它有 1 个整数和 1 个字符串,我得到的响应是 Jsonarray

我尝试了以下方法,但没有一个有效

  • 因为它是 json 数组请求,所以我无法在参数中发送数据,因为第三个参数只接受 JsonArray 并且我必须发送 JsonObject 所以将其保留为 null

    new JsonArrayRequest(Method,Url,JsonArray,ResponseListener,ErrorListner)

  • 我无法将其放入,HashMap因为值的 1 是整数,并且它只接受字符串

getparams() 方法

@Override
protected Map<String, String> getParams() throws AuthFailureError {
    Map<String,String> params=new HashMap<>();
    params.put("Id",7); //            <====== This is Invalid
    params.put("Name","MyName");
    return params;
}
Run Code Online (Sandbox Code Playgroud)
  • 我尝试发送 getbody 方法,仍然不起作用

获取主体方法

@Override
public byte[] getBody() {
    String body="{\"Id\":7,\"Name\":\"MyName\"}";
    return body.getBytes();
}
Run Code Online (Sandbox Code Playgroud)

我可以使用 HttpUrlConnection 获取响应。

还有其他方法可以实现齐射吗?

post android android-volley

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

如何在Android 9.0(PIE)中获取WIFI SSID?

如何在Android 9.0(PIE)中获取WIFI SSID?我的代码在android 8.1.0之前可以正常工作,但在android 9.0上却无法正常工作

ConnectivityManager connManager = (ConnectivityManager) activity.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo networkInfo = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
        if (networkInfo.isConnected()) {
            WifiManager wifiManager = (WifiManager) activity.getApplicationContext().getSystemService(Context.WIFI_SERVICE);
            WifiInfo wifiInfo = wifiManager.getConnectionInfo();
            wifiInfo.getSSID();
            String name = networkInfo.getExtraInfo();
            String ssid = "\"" + wifiInfo.getSSID() + "\"";
}
Run Code Online (Sandbox Code Playgroud)

但是此代码不适用于Android 9.0

android android-wifi networkinfo android-connectivitymanager android-9.0-pie

6
推荐指数
2
解决办法
7943
查看次数