T Каждый раз, когда я пытаюсь запустить свое приложение на устройствах android, оно постоянно выдает ошибки и выходит из приложения после 1 или 2 секунд времени запуска. Это мое заявление в 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;
}
}
}
В чем здесь ошибка?
Это мой файл манифеста
<?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>
Это ошибка I получаю:
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)