Android应用在某些设备上无法使用(Android app won't work in some of the devices)

编程入门 行业动态 更新时间:2024-10-25 10:22:13
Android应用在某些设备上无法使用(Android app won't work in some of the devices)

我创建了一个显示Firebase孩子的应用程序。 它在我的手机(nexus 6)中工作,并在另一个(一加3)中工作,但是当我将其安装在其他设备(如红米注释3)中时,应用程序部队关闭,我不知道为什么会发生这种情况。

logcat的:

java.lang.ClassCastException: android.support.v7.widget.AppCompatImageView cannot be cast to android.widget.Button at com.fayaz.uniabex.ItemDetailsAdapter.getView(ItemDetailsAdapter.java:58) at android.widget.AbsListView.obtainView(AbsListView.java:2346) at android.widget.ListView.measureHeightOfChildren(ListView.java:1281) at android.widget.ListView.onMeasure(ListView.java:1188) at android.view.View.measure(View.java:18811) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5952) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465) at android.widget.LinearLayout.measureVertical(LinearLayout.java:748) at android.widget.LinearLayout.onMeasure(LinearLayout.java:630) at android.view.View.measure(View.java:18811) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5952) at android.support.design.widget.CoordinatorLayout.onMeasureChild(CoordinatorLayout.java:668) at android.support.design.widget.HeaderScrollingViewBehavior.onMeasureChild(HeaderScrollingViewBehavior.java:90) at android.support.design.widget.AppBarLayout$ScrollingViewBehavior.onMeasureChild(AppBarLayout.java:1192) at android.support.design.widget.CoordinatorLayout.onMeasure(CoordinatorLayout.java:733) at android.view.View.measure(View.java:18811) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5952) at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:135) at android.view.View.measure(View.java:18811) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5952) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465) at android.widget.LinearLayout.measureVertical(LinearLayout.java:748) at android.widget.LinearLayout.onMeasure(LinearLayout.java:630) at android.view.View.measure(View.java:18811) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5952) at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) at android.view.View.measure(View.java:18811) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5952) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465) at android.widget.LinearLayout.measureVertical(LinearLayout.java:748) at android.widget.LinearLayout.onMeasure(LinearLayout.java:630) at android.view.View.measure(View.java:18811) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5952) at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) at com.android.internal.policy.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2643) at android.view.View.measure(View.java:18811) at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2127) at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1243) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1479) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1134) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6045) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:860) at android.view.Choreographer.doCallbacks(Choreographer.java:672) at android.view.Choreographer.doFrame(Choreographer.java:608) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:846) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5442) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:738) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:628)

这是我的git仓库Uniabex应用程序

这里是卡片视图布局,里面没有任何按钮,因为我昨天已经删除了按钮,并用ImageViews进行了更新

list_item.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.support.v7.widget.CardView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="5dp"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal"> <TextView android:id="@+id/ItemNametv" android:layout_width="30dp" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_weight="1" android:gravity="start" android:padding="16dp" android:textStyle="bold" android:textSize="18sp" android:text="@string/item_nam" /> <ImageView android:id="@+id/EditItem" android:layout_width="30dp" android:layout_height="30dp" android:layout_margin="14dp" android:contentDescription="Edit" android:src="@mipmap/ic_mode_edit_black_18dp" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" android:gravity="end"> <TextView android:id="@+id/qtytv" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_weight="1" android:gravity="left" android:padding="16dp" android:textSize="16sp" android:text="@string/qty" /> <ImageView android:id="@+id/DeleteItem" android:layout_width="30dp" android:layout_height="30dp" android:layout_gravity="center_vertical" android:layout_margin="14dp" android:contentDescription="Delete" android:src="@mipmap/ic_delete_black_18dp" /> </LinearLayout> </LinearLayout> </android.support.v7.widget.CardView> </LinearLayout>

ItemDetailsAdapter.java

package com.fayaz.uniabex; /** * Created by Fayaz on 21/12/2016. */ import android.widget.BaseAdapter; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.support.v7.app.AlertDialog; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.ImageView; import android.widget.TextView; import java.util.ArrayList; public class ItemDetailsAdapter extends BaseAdapter { private ArrayList<Item> arrayListItem; private Context context; private LayoutInflater inflater; public ItemDetailsAdapter(Context context, ArrayList<Item> arrayListItem) { this.context = context; this.arrayListItem = arrayListItem; inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); } @Override public int getCount() { return arrayListItem.size(); } @Override public Object getItem(int position) { return arrayListItem.get(position); } @Override public long getItemId(int position) { return 0; } @Override public View getView(final int position, View convertView, ViewGroup parent) { View v = convertView; Holder holder; if (v == null) { v = inflater.inflate(R.layout.list_item, null); holder = new Holder(); holder.ItemName = (TextView) v.findViewById(R.id.ItemNametv); holder.qty = (TextView) v.findViewById(R.id.qtytv); holder.EditItem = (ImageView) v.findViewById(R.id.EditItem); holder.DeleteItem = (ImageView) v.findViewById(R.id.DeleteItem); v.setTag(holder); } else { holder = (Holder) v.getTag(); } holder.ItemName.setText(arrayListItem.get(position).getItem()); holder.qty.setText(arrayListItem.get(position).getQty()); holder.EditItem.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(context,AddOrUpdateItem.class).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.putExtra("Position", position); context.getApplicationContext().startActivity(intent); } }); holder.DeleteItem.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { ShowConfirmDialog(context, position); } }); return v; } class Holder { TextView ItemName,qty; ImageView DeleteItem, EditItem; } public static void ShowConfirmDialog(Context context, final int position) { AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context); alertDialogBuilder .setMessage("Are you sure you want to delete this entry?") .setCancelable(true) .setPositiveButton("YES", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { MainActivity.getInstance().deleteItem(position); } }) .setNegativeButton("NO", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.cancel(); } }); AlertDialog alertDialog = alertDialogBuilder.create(); alertDialog.show(); } }

I created a app which displays firebase childs. It's working in my phone (nexus 6) and works in another (one plus 3), but when I installed it in other devices like a redmi note 3, the app force closes, I am not sure why this is happening.

Logcat:

java.lang.ClassCastException: android.support.v7.widget.AppCompatImageView cannot be cast to android.widget.Button at com.fayaz.uniabex.ItemDetailsAdapter.getView(ItemDetailsAdapter.java:58) at android.widget.AbsListView.obtainView(AbsListView.java:2346) at android.widget.ListView.measureHeightOfChildren(ListView.java:1281) at android.widget.ListView.onMeasure(ListView.java:1188) at android.view.View.measure(View.java:18811) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5952) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465) at android.widget.LinearLayout.measureVertical(LinearLayout.java:748) at android.widget.LinearLayout.onMeasure(LinearLayout.java:630) at android.view.View.measure(View.java:18811) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5952) at android.support.design.widget.CoordinatorLayout.onMeasureChild(CoordinatorLayout.java:668) at android.support.design.widget.HeaderScrollingViewBehavior.onMeasureChild(HeaderScrollingViewBehavior.java:90) at android.support.design.widget.AppBarLayout$ScrollingViewBehavior.onMeasureChild(AppBarLayout.java:1192) at android.support.design.widget.CoordinatorLayout.onMeasure(CoordinatorLayout.java:733) at android.view.View.measure(View.java:18811) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5952) at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:135) at android.view.View.measure(View.java:18811) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5952) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465) at android.widget.LinearLayout.measureVertical(LinearLayout.java:748) at android.widget.LinearLayout.onMeasure(LinearLayout.java:630) at android.view.View.measure(View.java:18811) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5952) at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) at android.view.View.measure(View.java:18811) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5952) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465) at android.widget.LinearLayout.measureVertical(LinearLayout.java:748) at android.widget.LinearLayout.onMeasure(LinearLayout.java:630) at android.view.View.measure(View.java:18811) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5952) at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) at com.android.internal.policy.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2643) at android.view.View.measure(View.java:18811) at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2127) at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1243) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1479) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1134) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6045) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:860) at android.view.Choreographer.doCallbacks(Choreographer.java:672) at android.view.Choreographer.doFrame(Choreographer.java:608) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:846) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5442) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:738) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:628)

Here is my git repository Uniabex app

Here is the Card view layout, there are no buttons in it, as I had removed the buttons yesterday and updated with ImageViews

list_item.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.support.v7.widget.CardView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="5dp"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal"> <TextView android:id="@+id/ItemNametv" android:layout_width="30dp" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_weight="1" android:gravity="start" android:padding="16dp" android:textStyle="bold" android:textSize="18sp" android:text="@string/item_nam" /> <ImageView android:id="@+id/EditItem" android:layout_width="30dp" android:layout_height="30dp" android:layout_margin="14dp" android:contentDescription="Edit" android:src="@mipmap/ic_mode_edit_black_18dp" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" android:gravity="end"> <TextView android:id="@+id/qtytv" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_weight="1" android:gravity="left" android:padding="16dp" android:textSize="16sp" android:text="@string/qty" /> <ImageView android:id="@+id/DeleteItem" android:layout_width="30dp" android:layout_height="30dp" android:layout_gravity="center_vertical" android:layout_margin="14dp" android:contentDescription="Delete" android:src="@mipmap/ic_delete_black_18dp" /> </LinearLayout> </LinearLayout> </android.support.v7.widget.CardView> </LinearLayout>

ItemDetailsAdapter.java

package com.fayaz.uniabex; /** * Created by Fayaz on 21/12/2016. */ import android.widget.BaseAdapter; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.support.v7.app.AlertDialog; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.ImageView; import android.widget.TextView; import java.util.ArrayList; public class ItemDetailsAdapter extends BaseAdapter { private ArrayList<Item> arrayListItem; private Context context; private LayoutInflater inflater; public ItemDetailsAdapter(Context context, ArrayList<Item> arrayListItem) { this.context = context; this.arrayListItem = arrayListItem; inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); } @Override public int getCount() { return arrayListItem.size(); } @Override public Object getItem(int position) { return arrayListItem.get(position); } @Override public long getItemId(int position) { return 0; } @Override public View getView(final int position, View convertView, ViewGroup parent) { View v = convertView; Holder holder; if (v == null) { v = inflater.inflate(R.layout.list_item, null); holder = new Holder(); holder.ItemName = (TextView) v.findViewById(R.id.ItemNametv); holder.qty = (TextView) v.findViewById(R.id.qtytv); holder.EditItem = (ImageView) v.findViewById(R.id.EditItem); holder.DeleteItem = (ImageView) v.findViewById(R.id.DeleteItem); v.setTag(holder); } else { holder = (Holder) v.getTag(); } holder.ItemName.setText(arrayListItem.get(position).getItem()); holder.qty.setText(arrayListItem.get(position).getQty()); holder.EditItem.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(context,AddOrUpdateItem.class).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.putExtra("Position", position); context.getApplicationContext().startActivity(intent); } }); holder.DeleteItem.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { ShowConfirmDialog(context, position); } }); return v; } class Holder { TextView ItemName,qty; ImageView DeleteItem, EditItem; } public static void ShowConfirmDialog(Context context, final int position) { AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context); alertDialogBuilder .setMessage("Are you sure you want to delete this entry?") .setCancelable(true) .setPositiveButton("YES", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { MainActivity.getInstance().deleteItem(position); } }) .setNegativeButton("NO", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.cancel(); } }); AlertDialog alertDialog = alertDialogBuilder.create(); alertDialog.show(); } }

最满意答案

有时候,在IDE中会出现问题,他们会让分配的id变得乱七八糟,并且项目需要需要重建,清理甚至使缓存无效并在某些情况下重新启动。 同样,在这种情况下,代码看起来很好,干净,重新构建,然后再次在小米上运行您的应用程序。

Sometimes, issue arises in IDEs that they make mess of assigned ids and project needs need to be rebuilt, clean and even invalidate cache and restart in some cases. As in this case, as well, code looks ok, clean, re-build then run your app on Xiaomi again.

更多推荐

android,java,widget,position,电脑培训,计算机培训,IT培训"/> <meta name="

本文发布于:2023-07-14 20:33:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1107220.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:设备   在某些   Android   devices   work

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!