新人自学一星期,控件闪退问题。求大神指点

csdn锦鲤 2018-11-16 02:17:10
代码没有报错,点击控件闪退(跳转到布局),日志有报错信息(看不懂)
这是日志信息

11/16 14:15:53: Launching app
$ adb install-multiple -r -t -p com.example.administrator.helloandroid F:\HelloAndroid\app\build\intermediates\split-apk\debug\slices\slice_1.apk F:\HelloAndroid\app\build\intermediates\instant-run-apk\debug\app-debug.apk
Split APKs installed in 531 ms
$ adb shell am start -n "com.example.administrator.helloandroid/com.example.administrator.helloandroid.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER
Client not ready yet..Connected to process 25627 on device emulator-5554
Capturing and displaying logcat messages from application. This behavior can be disabled in the "Logcat output" section of the "Debugger" settings page.
W/System: ClassLoader referenced unknown path: /data/app/com.example.administrator.helloandroid-1/lib/x86
I/InstantRun: starting instant run server: is main process
W/art: Before Android 4.1, method android.graphics.PorterDuffColorFilter android.support.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable
I/art: Rejecting re-init on previously-failed class java.lang.Class<android.support.v4.view.ViewCompat$OnUnhandledKeyEventListenerWrapper>: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/view/View$OnUnhandledKeyEventListener;
at void android.support.v4.view.ViewCompat.setBackground(android.view.View, android.graphics.drawable.Drawable) (ViewCompat.java:2341)
at void android.support.v7.widget.ActionBarContainer.<init>(android.content.Context, android.util.AttributeSet) (ActionBarContainer.java:62)
at java.lang.Object java.lang.reflect.Constructor.newInstance0!(java.lang.Object[]) (Constructor.java:-2)
at java.lang.Object java.lang.reflect.Constructor.newInstance(java.lang.Object[]) (Constructor.java:430)
at android.view.View android.view.LayoutInflater.createView(java.lang.String, java.lang.String, android.util.AttributeSet) (LayoutInflater.java:645)
at android.view.View android.view.LayoutInflater.createViewFromTag(android.view.View, java.lang.String, android.content.Context, android.util.AttributeSet, boolean) (LayoutInflater.java:787)
at android.view.View android.view.LayoutInflater.createViewFromTag(android.view.View, java.lang.String, android.content.Context, android.util.AttributeSet) (LayoutInflater.java:727)
at void android.view.LayoutInflater.rInflate(org.xmlpull.v1.XmlPullParser, android.view.View, android.content.Context, android.util.AttributeSet, boolean) (LayoutInflater.java:858)
at void android.view.LayoutInflater.rInflateChildren(org.xmlpull.v1.XmlPullParser, android.view.View, android.util.AttributeSet, boolean) (LayoutInflater.java:821)
at android.view.View android.view.LayoutInflater.inflate(org.xmlpull.v1.XmlPullParser, android.view.ViewGroup, boolean) (LayoutInflater.java:518)
at android.view.View android.view.LayoutInflater.inflate(int, android.view.ViewGroup, boolean) (LayoutInflater.java:426)
at android.view.View android.view.LayoutInflater.inflate(int, android.view.ViewGroup) (LayoutInflater.java:377)
at android.view.ViewGroup android.support.v7.app.AppCompatDelegateImpl.createSubDecor() (AppCompatDelegateImpl.java:607)
at void android.support.v7.app.AppCompatDelegateImpl.ensureSubDecor() (AppCompatDelegateImpl.java:518)
at void android.support.v7.app.AppCompatDelegateImpl.setContentView(int) (AppCompatDelegateImpl.java:466)
at void android.support.v7.app.AppCompatActivity.setContentView(int) (AppCompatActivity.java:140)
at void com.example.administrator.helloandroid.MainActivity.onCreate(android.os.Bundle) (MainActivity.java:15)
at void android.app.Activity.performCreate(android.os.Bundle) (Activity.java:6662)
at void android.app.Instrumentation.callActivityOnCreate(android.app.Activity, android.os.Bundle) (Instrumentation.java:1118)
at android.app.Activity android.app.ActivityThread.performLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.content.Intent) (ActivityThread.java:2599)
at void android.app.ActivityThread.handleLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.content.Intent, java.lang.String) (ActivityThread.java:2707)
at void android.app.ActivityThread.-wrap12(android.app.ActivityThread, android.app.ActivityThread$ActivityClientRecord, android.content.Intent, java.lang.String) (ActivityThread.java:-1)
at void android.app.ActivityThread$H.handleMessage(android.os.Message) (ActivityThread.java:1460)
at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:102)
at void android.os.Looper.loop() (Looper.java:154)
at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6077)
at java.lang.Object java.lang.reflect.Method.invoke!(java.lang.Object, java.lang.Object[]) (Method.java:-2)
at void com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run() (ZygoteInit.java:866)
at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:756)
Caused by: java.lang.ClassNotFoundException: Didn't find class "android.view.View$OnUnhandledKeyEventListener" on path: DexPathList[[zip file "/data/app/com.example.administrator.helloandroid-1/base.apk", zip file "/data/app/com.example.administrator.helloandroid-1/split_lib_dependencies_apk.apk", zip file "/data/app/com.example.administrator.helloandroid-1/split_lib_slice_0_apk.apk", zip file "/data/app/com.example.administrator.helloandroid-1/split_lib_slice_1_apk.apk", zip file "/data/app/com.example.administrator.helloandroid-1/split_lib_slice_2_apk.apk", zip file "/data/app/com.example.administrator.helloandroid-1/split_lib_slice_3_apk.apk", zip file "/data/app/com.example.administrator.helloandroid-1/split_lib_slice_4_apk.apk", zip file "/data/app/com.example.administrator.helloandroid-1/split_lib_slice_5_apk.apk", zip file "/data/app/com.example.administrator.helloandroid-1/split_lib_slice_6_apk.apk", zip file "/data/app/com.example.administrator.helloandroid-1/split_lib_slice_7_apk.apk", zip file "/d
at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:56)
at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:380)
at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)
at void android.support.v4.view.ViewCompat.setBackground(android.view.View, android.graphics.drawable.Drawable) (ViewCompat.java:2341)
at void android.support.v7.widget.ActionBarContainer.<init>(android.content.Context, android.util.AttributeSet) (ActionBarContainer.java:62)
at java.lang.Object java.lang.reflect.Constructor.newInstance0!(java.lang.Object[]) (Constructor.java:-2)
at java.lang.Object java.lang.reflect.Constructor.newInstance(java.lang.Object[]) (Constructor.java:430)
at android.view.View android.view.LayoutInflater.createView(java.lang.String, java.lang.String, android.util.AttributeSet) (LayoutInflater.java:645)
at android.view.View android.view.LayoutInflater.createViewFromTag(android.view.View, java.lang.String, android.content.Context, android.util.AttributeSet, boolean) (LayoutInflater.java:787)
at android.view.View android.view.LayoutInflater.createViewFromTag(android.view.View, java.lang.String, android.content.Context, android.util.AttributeSet) (LayoutInflater.java:727)
at void android.view.LayoutInflater.rInflat


这是布局代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
android:background="@drawable/bg_custom_dialog">

<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"
android:textColor="#000"
android:text="提示"
android:textStyle="bold"
android:layout_marginTop="20dp"/>
<TextView
android:id="@+id/tv_message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"
android:textColor="#000"
android:text="删除?"
android:layout_marginTop="20dp"
android:layout_marginBottom="20dp"
/>
<View
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:background="#999999"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="45dp"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_cancel"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="取消"
android:textSize="20sp"
android:textColor="#0fa8ce"
android:gravity="center"/>
<view
android:layout_width="0.5dp"
android:layout_height="match_parent"
android:background="#999999"/>
<TextView
android:id="@+id/tv_confirm"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="确定"
android:textSize="20sp"
android:textColor="#0fa8ce"
android:gravity="center"/>
</LinearLayout>
</LinearLayout>


...全文
106 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
csdn锦鲤 2018-11-16
  • 打赏
  • 举报
回复
有位大佬帮我解决了,谢谢关心哈哈
是一个View 的问题,注释了就可以直接运行了。谢谢回复
zaianda 2018-11-16
  • 打赏
  • 举报
回复
看了你的代码,你在CustomDialog类初始化 title,message,cancel,confirm;这几个变量为null,然后在OnCreat里面用isEmpty进行判断,有可能会出错哦。试试把那几个变量都初始化为空字符串""试试。
zaianda 2018-11-16
  • 打赏
  • 举报
回复
其实是很简单的问题,是说你某个空间或者对象没有定义,然后进行SetText操作时就会报错。你实在找不出问题,可以进入debug模式,然后在报错的地方打个断点,执行到断点后看看哪个对象没定义显示为null,然后处理就好了。
csdn锦鲤 2018-11-16
  • 打赏
  • 举报
回复
之后看跳过这个控件,看视频学新的,依然闪退。我的学习之路怕是要停在这了

新人网上自学不足一个月,求大佬指点
csdn锦鲤 2018-11-16
  • 打赏
  • 举报
回复
这是文件列表,与闪退控件有关的4个文件


我也不知道大佬们还需要哪些,我就都上传了吧

这是第一个 CustomDialogActivity
package com.example.administrator.helloandroid;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

import com.example.administrator.helloandroid.until.ToastUntil;
import com.example.administrator.helloandroid.widget.CustomDialog;

public class CustomDialogActivity extends AppCompatActivity {
private Button mBtndialog;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_custom);
mBtndialog = findViewById(R.id.btn_custom_dialog);
mBtndialog.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
CustomDialog customDialog = new CustomDialog(CustomDialogActivity.this);
customDialog.setTitle("提示").setMessage("确认删除此项?").setCancel("取消", new CustomDialog.IOnCancelListener() {
@Override
public void onCancel(CustomDialog dialog) {
//点击取消之后
ToastUntil.showMsg(CustomDialogActivity.this,"cancel...");
}
}).setConfirm("确认", new CustomDialog.IOnConfirmListener() {
@Override
public void onConfirm(CustomDialog dialog) {
//点击确认之后
ToastUntil.showMsg(CustomDialogActivity.this,"confirm...");
}
}).show();
}
});
}
}


这是第二个 CustomDialog

package com.example.administrator.helloandroid.widget;

import android.app.Dialog;
import android.content.Context;
import android.graphics.Point;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.text.TextUtils;
import android.view.Display;
import android.view.View;
import android.view.WindowManager;
import android.widget.TextView;

import com.example.administrator.helloandroid.R;

public class CustomDialog extends Dialog implements View.OnClickListener {
private TextView mTvTitle,mTvMessage,mTvCancel,mTvConfirm;
private String title,message,cancel,confirm;
private IOnCancelListener cancelListener;
private IOnConfirmListener confirmListener;
public CustomDialog(@NonNull Context context) {
super(context);
}

public CustomDialog(@NonNull Context context, int themeResId) {
super(context, themeResId);
}

public CustomDialog setTitle(String title) {
this.title = title;
return this;
}

public CustomDialog setMessage(String message) {
this.message = message;
return this;
}

public CustomDialog setCancel(String cancel,IOnCancelListener listener) {
this.cancel = cancel;
this.cancelListener = listener;
return this;
}

public CustomDialog setConfirm(String confirm,IOnConfirmListener listener) {
this.confirm = confirm;
this.confirmListener = listener;
return this;
}

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_custom_dialog);
//设置宽度
WindowManager m= getWindow().getWindowManager();
Display d =m.getDefaultDisplay();
WindowManager.LayoutParams p = getWindow().getAttributes();
Point size = new Point();
d.getSize(size);
p.width = (int)(size.x * 0.8);
getWindow().setAttributes(p);
mTvTitle = findViewById(R.id.tv_title);
mTvMessage = findViewById(R.id.tv_message);
mTvCancel = findViewById(R.id.tv_cancel);
mTvConfirm = findViewById(R.id.tv_confirm);
if(!TextUtils.isEmpty(title)){
mTvTitle.setText(title);
}
if(!TextUtils.isEmpty(message)){
mTvMessage.setText(message);
}
if(!TextUtils.isEmpty(cancel)){
mTvCancel.setText(cancel);
}
if(!TextUtils.isEmpty(confirm)){
mTvConfirm.setText(confirm);
}

mTvCancel.setOnClickListener(this);
mTvConfirm.setOnClickListener(this);
}

@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.tv_cancel:
if(cancelListener != null){
cancelListener.onCancel(this);
}
dismiss();
break;
case R.id.tv_confirm:
if(confirmListener != null){
confirmListener.onConfirm(this);
}
dismiss();
break;
}
}

public interface IOnCancelListener{
void onCancel(CustomDialog dialog);
}
public interface IOnConfirmListener{
void onConfirm(CustomDialog dialog);
}
}


这是第三个 activity_custom.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<Button
android:id="@+id/btn_custom_dialog"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="自定义dialog"
android:textAllCaps="false"/>
</LinearLayout>


这是第四个 layout_custom_dialog.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
android:background="@drawable/bg_custom_dialog">

<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"
android:textColor="#000"
android:text="提示"
android:textStyle="bold"
android:layout_marginTop="20dp"/>
<TextView
android:id="@+id/tv_message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"
android:textColor="#000"
android:text="删除?"
android:layout_marginTop="20dp"
android:layout_marginBottom="20dp"
/>
<View
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:background="#999999"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="45dp"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_cancel"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="取消"
android:textSize="20sp"
android:textColor="#0fa8ce"
android:gravity="center"/>
<view
android:layout_width="0.5dp"
android:layout_height="match_parent"
android:background="#999999"/>
<TextView
android:id="@+id/tv_confirm"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="确定"
android:textSize="20sp"
android:textColor="#0fa8ce"
android:gravity="center"/>
</LinearLayout>
</LinearLayout>

80,354

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧