简体   繁体   English

如果我的应用每次启动后都退出,我该怎么办?

[英]What should I do if my app is getting out after every launch?

T Everytime when I try to launch my app on android devices it is constantly giving errors and getting out of app after 1 or 2 seconds of launchtime. T 每次当我尝试在 Android 设备上启动我的应用程序时,它都会不断出现错误并在启动时间 1 或 2 秒后退出应用程序。 This is my application in java:这是我在java中的应用程序:

package com.e.sweetwallpaper;

import androidx.appcompat.app.AppCompatActivity;

import android.app.WallpaperManager;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;

import java.io.IOException;

public class MainActivity extends AppCompatActivity {

    Integer[]myImageArray = {
            R.drawable.mmm, R.drawable.mmm1,
            R.drawable.mmm2, R.drawable.mmm3
    };

    GridView myGridView;
    ImageView myCurrentWallpaper;
    Drawable myDrawable;
    WallpaperManager myWallManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        myGridView = findViewById(R.id.myGridView);
        myCurrentWallpaper = findViewById(R.id.myImageView);
        myGridView.setAdapter(new ImageAdapter(getApplicationContext()));
        UpdateMyWallpaper();
    }

    private void UpdateMyWallpaper(){
        myWallManager = WallpaperManager.getInstance(getApplicationContext());
        myDrawable = myWallManager.getDrawable();
        myCurrentWallpaper.setImageDrawable(myDrawable);
    }

    public class ImageAdapter extends BaseAdapter {

        Context myContext;
        private Object view;

        public ImageAdapter(Context applicationContext) {

            myContext = applicationContext;
        }

        @Override
        public int getCount() {
            return myImageArray.length;
        }

        @Override
        public Object getItem(int position) {
            return null;
        }

        @Override
        public long getItemId(int position) {
            return 0;
        }

        @Override
        public View getView(final int position, View convertView, ViewGroup parent) {

            ImageView GridImageView;

            if (view == null){

                GridImageView = new ImageView(myContext);
                GridImageView.setLayoutParams(new GridView.LayoutParams(512,512));
                GridImageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
            }else {
                GridImageView = (ImageView) view;
            }
            GridImageView.setImageResource(myImageArray [position]);

            GridImageView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    try {

                        myWallManager.setResource(myImageArray [position]);

                    } catch (IOException e) {

                        e.printStackTrace();
                    }
                    UpdateMyWallpaper();

                }
            });

            return GridImageView;
        }
    }
}

What is making error in here ?这里有什么错误?

this is my manifest file这是我的清单文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.e.sweetwallpaper">

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

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme"
        tools:ignore="GoogleAppIndexingWarning">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

This is an error I'm getting:这是我收到的错误:

01-23 14:33:15.064 11443-11443/com.e.sweetwallpaper E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.e.sweetwallpaper, PID: 11443
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.e.sweetwallpaper/com.e.sweetwallpaper.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ImageView.setImageDrawable(android.graphics.drawable.Drawable)' on a null object reference
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2656)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2721)
        at android.app.ActivityThread.access$900(ActivityThread.java:168)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1393)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:135)
        at android.app.ActivityThread.main(ActivityThread.java:5753)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1405)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1200)
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ImageView.setImageDrawable(android.graphics.drawable.Drawable)' on a null object reference
        at com.e.sweetwallpaper.MainActivity.UpdateMyWallpaper(MainActivity.java:43)
        at com.e.sweetwallpaper.MainActivity.onCreate(MainActivity.java:37)
        at android.app.Activity.performCreate(Activity.java:6112)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1117)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2609)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2721) 
        at android.app.ActivityThread.access$900(ActivityThread.java:168) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1393) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:135) 
        at android.app.ActivityThread.main(ActivityThread.java:5753) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at java.lang.reflect.Method.invoke(Method.java:372) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1405) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1200) 

based on your stack trace it seems that this call does not return the view because it can't find a view with this id:根据您的堆栈跟踪,此调用似乎没有返回视图,因为它找不到具有此 ID 的视图:

myCurrentWallpaper = findViewById(R.id.myImageView);

Please make sure that you have an ImageView with the id android:id="@+id/myImageView" in your activity_main layout file.请确保您的activity_main布局文件中有一个 ID 为android:id="@+id/myImageView"的 ImageView。

if you think you have, please share your layout file (by editing your question).如果您认为有,请分享您的布局文件(通过编辑您的问题)。 Maybe you have an issue directly in the layout causing that problem也许您在布局中直接有问题导致该问题

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM