小编Par*_*dam的帖子

无法创建ViewModel类的实例

我正在尝试使用Android架构组件编写示例应用程序,但即使在尝试了几天之后我也无法使用它.它给了我以上例外.

生命周期所有者: -

public class MainActivity extends LifecycleActivity {

    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        TextView textView = findViewById(R.id.tv_user);
        PostViewModel viewModel = ViewModelProviders.of(this).get(PostViewModel.class);
        viewModel.loadPosts();
        viewModel.getPost().observe(this, new Observer<Post>() {
            @Override
            public void onChanged(@Nullable Post post) {
                if(post != null) {
                    textView.setText(post.toString());
                }
            }
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

视图模型: -

public class PostViewModel extends ViewModel {
    private MediatorLiveData<Post> post;
    private PostRepository postRepo;

    PostViewModel() {
        post = new MediatorLiveData<>();
        postRepo = new PostRepository();
    }

    public LiveData<Post> loadPosts() {
        post.addSource(postRepo.getPost(),
                post -> this.post.setValue(post)
        ); …
Run Code Online (Sandbox Code Playgroud)

android mvvm android-architecture-components

41
推荐指数
14
解决办法
3万
查看次数

在Android 6.0上,Alarm Manager无法在后台运行

这是我的Activity代码,

Long time = new GregorianCalendar().getTimeInMillis()+20000;//Setting alarm after 20 sec
Intent intentAlarm = new Intent("alarm");
intentAlarm.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intentAlarm.putExtra("req_code",10);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context,10, intentAlarm, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, time, pendingIntent);
Run Code Online (Sandbox Code Playgroud)

这些是我在我的应用中拥有的所有权限,

  <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-permission android:name="android.permission.GET_ACCOUNTS"/>
    <uses-permission android:name="com.myapp.pack.permission.SET_ALARM"/>
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
Run Code Online (Sandbox Code Playgroud)

这是我的BroadcastReceiver代码,

@Override
public void onReceive(Context context, Intent intent) {
        SharedPreferences sharedPreferences =
        context.getSharedPreferences( "mydata", Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = sharedPreferences.edit();
        editor.putBoolean("elligible",true);
        editor.apply();

    }
Run Code Online (Sandbox Code Playgroud)

BroadcastReceiver在清单上注册了我的,

 <receiver …
Run Code Online (Sandbox Code Playgroud)

android android-intent android-alarms android-broadcast android-broadcastreceiver

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

FCM(Firebase云消息传递)如何发送到所有电话?

我创建了一个小型应用程序,可以从FCM控制台接收推送通知.

我现在要做的是向所有使用API​​安装应用程序的Android手机发送推送通知.这就是我完全迷失的地方.没有收集所有注册ID,是否无法将其发送到所有电话?这仅适用于控制台,而不适用于API吗?

提前

android google-api push-notification firebase firebase-cloud-messaging

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

print函数不会在sublime text 3控制台上显示输出

我今天开始使用Python并遇到一个奇怪的问题.我正在使用Python 3.5.1和Sublime文本3并编写了一个基本的hello world程序.

print('Hello World')

保存此文件名为python1.py并按下Ctrl + B执行它,但控制台上显示的唯一内容是[在XYZs中完成],这意味着程序成功执行但未显示输出.

注意:我使用的是Windows 8(如果这很重要)并且Python安装正确,我可以毫无问题地从CMD运行我的程序.

在此输入图像描述

python python-3.x sublimetext3

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

使用 Retrofit 暂停和恢复下载

我使用本教程在我的应用程序中实现下载文件:https : //www.learn2crack.com/2016/05/downloading-file-using-retrofit.html

问题是,如果互联网速度很慢或网络波动甚至一秒钟,下载将永久停止。应用程序是否可以通过某种方式检测到互联网未激活(已连接但实际上网络不工作),然后在互联网正常时暂停下载并恢复。

或者一些替代方案,这样用户就不会感到沮丧?

android retrofit

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

将 Firebase 与 Kotlin 协程结合使用

我在我的应用程序中使用 Kotlin 协程,并选择了 firebase 作为我的数据库和存储选择。在探索 firebase 之后,我意识到它的所有 API 都是异步的,并且异步调用的结果在回调中返回,而摆脱回调是我在我的应用程序中使用 Kotlin 协程的主要原因。

这是我编写的将文件上传到 firebase 云存储的代码,但它给出了“任务尚未完成”错误。

private suspend fun saveImage(filePath: String): String? {
        val storage = FirebaseStorage.getInstance("gs://myapp-9a648.appspot.com/")
        val storageRef = storage.reference
        val file = Uri.fromFile(File(filePath))
        val imageRef = storageRef.child("images/${file.lastPathSegment}")
        return withContext(Dispatchers.IO) {
            imageRef.putFile(file).snapshot.storage.downloadUrl.result.toString()
        }
    }
Run Code Online (Sandbox Code Playgroud)

E/AndroidRuntime:致命异常:主进程:pk.com.kotlinapp,PID:7491 java.lang.IllegalStateException:com.google.android.gms.common.internal.Preconditions.checkState(未知来源)处的任务尚未完成在 com.google.android.gms.tasks.zzu.zzb(未知来源)在 com.google.android.gms.tasks.zzu.getResult(未知来源)在 prk.com.kotlinapptest.DatabaseManager$saveImage$2.invokeSuspend( DatabaseManager.kt:28) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) at kotlinx.coroutines.DispatchedTask.run(Dispatched.kt:241) at kotlinx.coroutines.scheduling.CoroutineSafelyScheduler. (CoroutineScheduler.kt:594) 在 kotlinx.coroutines.scheduling.CoroutineScheduler.access$runSafely(CoroutineScheduler.kt:60) 在 kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:740)

有什么方法可以将文件上传到 firebase 云存储并获取下载 URL,而无需在成功回调中获取下载 URL?

android kotlin firebase kotlin-coroutines

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

返回 Map 的 Java 流

如何使用 Java Streams 解决以下问题?

鉴于:-

class Dress {
    private String brandName;
    private String color;

    public String getBrandName() {
        return brandName;
    }

    public String getColor() {
        return color;
    }
}


List<Dress> dresses = getDresses(); // API call
Run Code Online (Sandbox Code Playgroud)

必需的:-

// Number of dresses per color

Map<String, Integer> colorToCountMap;
Run Code Online (Sandbox Code Playgroud)

java java-stream

3
推荐指数
1
解决办法
421
查看次数

从 Double 到 Float 的类型转换会导致 ClassCastException

代码:-

val num = 12.12
val num2: Float = num.toFloat() // Works
val num3: Float = num as Float // Exception
Run Code Online (Sandbox Code Playgroud)

例外:-

线程“main”中的异常java.lang.ClassCastException:类java.lang.Double无法转换为类java.lang.Float(java.lang.Double和java.lang.Float位于加载程序'bootstrap的模块java.base中')

谁能告诉我为什么num.toFloat()工作正常但num as Float出现错误?这两种不同的语法不应该做同样的事情吗?

kotlin

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

无法在 Android(在 MarshMallow 及更高版本上)设备中创建目录

我正在尝试使用以下代码在我的 SD 卡上创建一个文件夹,但它失败了。这是我写的代码onCreate()

File test = new File(Environment.getExternalStorageDirectory(),"my_directory");
if(!test.exists())
{
    try 
    {
        if (test.mkdir()) 
        {
            Log.d("xxx", "directory created");
        } 
        else 
        {
             Log.d("xxx", "directory creation failed");
        }
    }
    catch (Exception e)
    {
        e.printStackTrace();
    }
}
else
{
    Log.d("xxx","directory already present");
}
Run Code Online (Sandbox Code Playgroud)

当我运行上面的代码时没有给出任何异常,它只是打印 directory creation failed日志。

我也给予了以下许可,

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

我用的是小米红米note 3,安卓版本是6.0.1。

android android-permissions android-6.0-marshmallow

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