一切正常,应用程序出现了。但当我点击任何切换按钮时,应用程序就会崩溃。
我试过了,但找不到问题。其实我的知识还不够,我是这个领域的新手。所以请帮帮我。
这是查看活动。JAVA
package com.wallpaper.wallperx;
import android.Manifest;
import android.annotation.SuppressLint;
import android.app.WallpaperManager;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.FileProvider;
import com.github.clans.fab.FloatingActionButton;
import com.github.clans.fab.FloatingActionMenu;
import com.squareup.picasso.Picasso;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.UUID;
public class ViewActivity<bgDrawable> extends AppCompatActivity implements View.OnClickListener {
ImageView imageView;
FloatingActionMenu floatingActionMenu;
FloatingActionButton floatingActionButton, btn_set, btn_share, btn_download;
private static final int PERMISSION_REQUEST_CODE = 1000;
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == PERMISSION_REQUEST_CODE) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED)
Toast.makeText(this, "Permission Granted", Toast.LENGTH_SHORT).show();
else
Toast.makeText(this, "Permission Denied", Toast.LENGTH_SHORT).show();
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view);
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
requestPermissions(new String[]{
Manifest.permission.WRITE_EXTERNAL_STORAGE
}, PERMISSION_REQUEST_CODE);
}
floatingActionMenu = findViewById(R.id.floatingActionMenu);
btn_set = findViewById(R.id.SetWallpaper);
btn_share = findViewById(R.id.ShareWallpaper);
btn_download = findViewById(R.id.DownloadWallpaper);
btn_set.setOnClickListener(this);
btn_share.setOnClickListener(this);
btn_download.setOnClickListener(this);
imageView = findViewById(R.id.fullImage);
Picasso.get().load(getIntent().getStringExtra("images")).into(imageView);
}
@RequiresApi(api = Build.VERSION_CODES.M)
@Override
public void onClick (View v){
switch (v.getId()) {
case R.id.SetWallpaper:
SetWallpaper();
floatingActionButton.toggle(true);
break;
case R.id.ShareWallpaper:
ShareWallpaper();
floatingActionButton.toggle(true);
break;
case R.id.DownloadWallpaper:
saveImage();
floatingActionButton.toggle(true);
break;
}
}
@RequiresApi(api = Build.VERSION_CODES.M)
private void saveImage ()
{
if (ActivityCompat.checkSelfPermission(ViewActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
Toast.makeText(ViewActivity.this, "You Should Grant Permission", Toast.LENGTH_SHORT).show();
if (Build.VERSION.SDK_INT > -Build.VERSION_CODES.M) {
requestPermissions(new String[]{
Manifest.permission.WRITE_EXTERNAL_STORAGE
}, PERMISSION_REQUEST_CODE);
}
} else {
String fileName = UUID.randomUUID().toString() + ".jpg";
Picasso.get().load(getIntent().getStringExtra("images")).into(new SaveImageHelper(getBaseContext(),
getApplicationContext(), getContentResolver(),
fileName,
"Image Description"));
}
}
@SuppressLint("SetWorldReadable")
private void ShareWallpaper () {
Bitmap bitmap = getBitmapFromView(imageView);
try {
File file = new File(this.getExternalCacheDir(), "black.png");
FileOutputStream fOut = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fOut);
fOut.flush();
fOut.close();
file.setReadable(true, false);
Intent intent = new Intent(android.content.Intent.ACTION_SEND);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra(Intent.EXTRA_STREAM, FileProvider.getUriForFile(ViewActivity.this, BuildConfig.APPLICATION_ID + "provider", file));
intent.setType("image/*");
startActivity(Intent.createChooser(intent, "Share this image Via"));
} catch (Exception e) {
e.printStackTrace();
}
}
private Bitmap getBitmapFromView (View view){
Bitmap returnBitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(returnBitmap);
Drawable bgDrawable = view.getBackground();
if (bgDrawable != null)
bgDrawable.draw(canvas);
else
canvas.drawColor(Color.WHITE);
view.draw(canvas);
return returnBitmap;
}
private void SetWallpaper () {
Bitmap bitmap = ((BitmapDrawable) imageView.getDrawable()).getBitmap();
WallpaperManager manager = WallpaperManager.getInstance(getApplicationContext());
try {
manager.setBitmap(bitmap);
Toast.makeText(this, "your Wallpaper set successfully!", Toast.LENGTH_SHORT).show();
} catch (IOException e) {
Toast.makeText(this, "Ooh no... its an Error!", Toast.LENGTH_SHORT).show();
}
}
}
还有这只logcat
2020-03-18 03:16:50.407 31609-31609/? E/lpaper。wallper:运行时设置的未知位_标志:0x8000 2020-03-18 03:17:04.862 31609-31609/com。墙纸。wallperx E/AndroidRuntime:致命异常:主进程:com。墙纸。沃珀,PID:31609爪哇。lang.NullPointerException:尝试调用虚拟方法的void com。github。家族。绝妙的。浮动操作按钮。在com的空对象引用上切换(布尔值)。墙纸。沃珀。查看活动。android上的onClick(ViewActivity.java:97)。看法看法android上的performClick(View.java:7125)。看法看法android上的performClickInternal(View.java:7102)。看法看法在Android上获得3500美元(View.java:801)。看法查看$PerformClick。在android上运行(View.java:27336)。操作系统。汉德勒。android上的handleCallback(Handler.java:883)。操作系统。汉德勒。android上的dispatchMessage(Handler.java:100)。操作系统。活套。android上的loop(Looper.java:214)。应用程序。活动线程。java上的main(ActivityThread.java:7356)。朗,反思一下。方法在com上调用(本机方法)。Android内部的操作系统。RuntimeInit$MethodAndArgsCaller。在com上运行(RuntimeInit.java:492)。Android内部的操作系统。合子体。main(ZygoteInit.java:930)
您忘记了,所以当您调用FloatingActionButton
的函数切换时,它将为null:
Move floatingActionMenu=findViewById(R.id.floatingActionMenu);在权限部分之外,视图为空。
floatingActionMenu = findViewById(R.id.floatingActionMenu);
btn_set = findViewById(R.id.SetWallpaper);
btn_share = findViewById(R.id.ShareWallpaper);
btn_download = findViewById(R.id.DownloadWallpaper);
btn_set.setOnClickListener(this);
btn_share.setOnClickListener(this);
btn_download.setOnClickListener(this);
imageView = findViewById(R.id.fullImage);
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
requestPermissions(new String[]{
Manifest.permission.WRITE_EXTERNAL_STORAGE
}, PERMISSION_REQUEST_CODE);
}
Picasso.get().load(getIntent().getStringExtra("images")).into(imageView);
}
这个bug说:com。github。家族。绝妙的。浮动操作按钮。在以下位置对空对象引用切换(布尔)“
如果您遵循其他项目的代码,例如
floatingActionMenu
,您将看到此项目分配了一个视图:
floatingActionMenu = findViewById(R.id.floatingActionMenu);
您应该对
floatingActionButton
执行相同的操作,并使用findViewById
为其指定布局元素,然后再对其执行任何操作。在onCreate
方法中,与使用floatingActionMenu
一样,是最好的选择,但如果:
floatingActionButton = findViewById(R.id.floatingActionButton);
假设floatingActionButton在布局上有一个id
floatingActionButton
。
当我在设备上运行应用程序时单击增量按钮时,我的应用程序意外地强制执行这是我的activity_main.xml代码 这是我的mainactivity.java文件 这是调试报告05-23 22:14:45.695 297 36-29736/com.orton.birthdayCard E/AndroidRuntime:致命异常:主进程:com.orton.birthdayCard,PID:2973
我是android新手,我正在学习一些教程,在这一点上,当我点击登录按钮时,应用程序不断崩溃。当我运行应用程序并单击登录按钮时,应用程序崩溃,在logcat中,它显示java RuntimeException的这个错误。这是我的logcat,loginactivity。xml和loginactivity。JAVA JAVAlang.RuntimeException:无法启动活动组件信息{com.e
每次我点击按钮1,我的应用程序就会崩溃。同一活动中的另一个按钮可以正常工作。我已经试过更换按钮和代码了。控制台中没有错误。
每当我单击登录页面中的“注册”按钮时,应用程序就会崩溃,无法移动到下一个活动。我已经在这个问题上纠缠了一天,似乎在任何地方都找不到解决办法。 下面是我为注册按钮方法编写的代码。(和是文本输入布局) Logcat在第7行显示错误,即ref.child(…行)。我尝试了第7行的替代方法,如:
这是崩溃错误logcat,每次我时钟在我的寄存器btn应用程序崩溃。 我的模拟器是在Android模拟器设备上的2gb ram。 2019-09-22 16:36:39.307 6454-6454/com。康奈克斯。connexsocial E/AndroidRuntime:致命异常:主进程:com。康奈克斯。connexsocial,PID:6454Android系统。所容纳之物Activity
} 以下是我从logcat收到的错误: