gpt4 book ai didi

java - Android-Listview setOnItemClickListener 错误

转载 作者:行者123 更新时间:2023-11-30 04:54:26 28 4
gpt4 key购买 nike

我有 MenuActivity,有显示餐厅菜单的 ListView ,它使用称为 FoodAdapter 的适配器。它有效,我正在尝试制作菜单的详细信息,如果您单击菜单,则会出现包含食物详细信息的 FoodDetailActivity。

MenuActivity ListView 单击 > FoodDetailActivity 显示食物详细信息。

但问题出现了,当我点击菜单 ListView 上的项目时,空白屏幕出现大约 500 毫秒,然后返回到 MainActivity。我的假设是我在 MenuActivity.java 上这段代码的 putExtra Intent 中可能做错了什么,或者我的手机不支持布局。

orderListView.setOnItemClickListener(new AdapterView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?>parent, View view, int position, long id) {
Intent i = new Intent(MenuActivity.this, FoodDetailActivity.class);
Food currentFood = foods.get(position);
//Log.e("FOOD NAME", currentFood.getFoodName());
i.putExtra("name", currentFood.getFoodName());
i.putExtra("image", currentFood.getmImageResource());
i.putExtra("price", currentFood.getFoodPrice());
i.putExtra("type", currentFood.getType());
startActivityForResult(i, REQUEST_CODE);

}

这里是完整的MenuActivity.java代码

public class MenuActivity extends AppCompatActivity {
public static final int REQUEST_CODE = 1;
FoodAdapter adapter;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_menu);
//arraylist to make model array from Food class
final ArrayList<Food> foods = new ArrayList<>();
foods.add(new Food("AYAM BAKAR", "Ayam Bakar pak budi", R.drawable.a1, 50000));
foods.add(new Food("AYAM GORENG", "Ayam Bakar pak budi", R.drawable.a2, 50000));
foods.add(new Food("AYAM REBUS", "Ayam Bakar pak budi", R.drawable.a3, 50000));
foods.add(new Food("AYAM KECAP", "Ayam Bakar pak budi", R.drawable.a4, 50000));

adapter = new FoodAdapter(this, foods);
ListView orderListView = (ListView) findViewById(R.id.order_list_view);
orderListView.setAdapter(adapter);
orderListView.setOnItemClickListener(new AdapterView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?>parent, View view, int position, long id) {
Intent i = new Intent(MenuActivity.this, FoodDetailActivity.class);
Food currentFood = foods.get(position);
//Log.e("FOOD NAME", currentFood.getFoodName());
i.putExtra("name", currentFood.getFoodName());
i.putExtra("image", currentFood.getmImageResource());
i.putExtra("price", currentFood.getFoodPrice());
i.putExtra("type", currentFood.getType());
startActivityForResult(i, REQUEST_CODE);

}
});

}

这里是 FoodDetailActivity.java

public class FoodDetailActivity extends AppCompatActivity {
private int item = 0;
private int price = 0;
TextView sumTextView;
TextView priceTotalTextView;
TextView txtName, txtQuantity, txtPrice;
Button btnAdd, btnCart;
public static SQLiteOpenHelper sqLiteHelper;
public static String DATABASENAME = "cartDB.db";
public static String TABLENAME = "cart";
public static String ID = "id";
public static String NAME = "name";
public static String QUANTITY = "quantity";
public static String PRICE = "price";
SQLiteDatabase db;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_food_detail);
init();
String name = getIntent().getStringExtra("name");
String type1 = getIntent().getStringExtra("type");
int image;
image = getIntent().getIntExtra("image", -1);
price = getIntent().getIntExtra("price", -1);
//Log.e("SECOND ACTIVITY", name);

TextView nameTextView = (TextView) findViewById(R.id.food_name_text_view);
nameTextView.setText(name);
TextView type = (TextView) findViewById(R.id.type);
type.setText(type1);
ImageView imageView = (ImageView) findViewById(R.id.food_image);
imageView.setImageResource(image);
imageView.setVisibility(View.VISIBLE);
TextView priceTextView = (TextView) findViewById(R.id.price_detail_text_view);
priceTextView.setText(Integer.toString(price));

sumTextView = (TextView)findViewById(R.id.sum_text_view);
priceTotalTextView = (TextView) findViewById(R.id.price_total_text_view);
Button incrementButton = (Button) findViewById(R.id.increment_button);
incrementButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
increment();
}
});
Button decrementButton = (Button) findViewById(R.id.decrement_button);
decrementButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
decrement();
}
});
}
private void init(){
txtName = findViewById(R.id.food_name_text_view);
txtQuantity = findViewById(R.id.sum_text_view);
txtPrice = findViewById(R.id.price_total_text_view);
btnAdd = findViewById(R.id.order_button);
btnCart = findViewById(R.id.cart_button);

}
private void increment(){
item++;
sumTextView.setText(Integer.toString(item));
priceTotalTextView.setText(Integer.toString(sumOfProduct(price)));
}
private void decrement(){
if (item<1){
Toast.makeText(this, "Maaf Order Minimal 1", Toast.LENGTH_SHORT).show();
return;
}
item = item-1;
sumTextView.setText(Integer.toString(item));
priceTotalTextView.setText(Integer.toString(sumOfProduct(price)));
}
private int sumOfProduct(int price){

return item*price;
}
}

这是错误日志,我不知道应该显示哪一个:

2019-12-26 18:11:21.255 24053-24053/? E/libc: Access denied finding property "persist.vendor.sys.activitylog"
2019-12-26 18:11:21.992 24053-24122/com.rifinew.rumahpohon E/OpenGLRenderer: Device claims wide gamut support, cannot find matching config, error = EGL_SUCCESS
2019-12-26 18:11:22.025 24053-24122/com.rifinew.rumahpohon E/ion: ioctl c0044901 failed with code -1: Invalid argument

//when i click on listview to get detail listview activity
2019-12-26 18:12:58.736 24187-24187/? E/libc: Access denied finding property "persist.vendor.sys.activitylog"
2019-12-26 18:12:58.745 24187-24203/? E/inew.rumahpoho: Failed to send DDMS packet REAQ to debugger (-1 of 20): Broken pipe
2019-12-26 18:12:59.140 24187-24257/? E/OpenGLRenderer: Device claims wide gamut support, cannot find matching config, error = EGL_SUCCESS
2019-12-26 18:12:59.197 24187-24257/? E/ion: ioctl c0044901 failed with code -1: Invalid argument
<br><br>
//and this one too
2019-12-26 18:33:59.065 26392-26392/? E/libc: Access denied finding property "persist.vendor.sys.activitylog"
2019-12-26 18:34:02.040 26392-26392/com.rifinew.rumahpohon E/ANR_LOG: >>> msg's executing time is too long
2019-12-26 18:34:02.040 26392-26392/com.rifinew.rumahpohon E/ANR_LOG: Blocked msg = { when=-2s949ms what=110 target=android.app.ActivityThread$H obj=AppBindData{appInfo=ApplicationInfo{98d9e1e com.rifinew.rumahpohon}} } , cost = 2929 ms
2019-12-26 18:34:02.040 26392-26392/com.rifinew.rumahpohon E/ANR_LOG: >>>Current msg List is:
2019-12-26 18:34:02.042 26392-26392/com.rifinew.rumahpohon E/ANR_LOG: Current msg <1> = { when=-2s945ms what=159 target=android.app.ActivityThread$H obj=ClientTransaction hashCode, mActivityToken = android.os.BinderProxy@ada6ff }
2019-12-26 18:34:02.043 26392-26392/com.rifinew.rumahpohon E/ANR_LOG: Current msg <2> = { when=-2s688ms what=149 target=android.app.ActivityThread$H obj=android.os.BinderProxy@ada6ff }
2019-12-26 18:34:02.043 26392-26392/com.rifinew.rumahpohon E/ANR_LOG: >>>CURRENT MSG DUMP OVER<<<
2019-12-26 18:34:02.545 26392-26426/com.rifinew.rumahpohon E/OpenGLRenderer: Device claims wide gamut support, cannot find matching config, error = EGL_SUCCESS
2019-12-26 18:34:02.605 26392-26426/com.rifinew.rumahpohon E/ion: ioctl c0044901 failed with code -1: Invalid argument
//begining of the crash
--------- beginning of crash
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.rifinew.rumahpohon, PID: 26392
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.rifinew.rumahpohon/com.rifinew.rumahpohon.FoodDetailActivity}: android.view.InflateException: Binary XML file line #149: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3181)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3318)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:113)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:71)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2044)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:226)
at android.app.ActivityThread.main(ActivityThread.java:7212)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:576)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:956)
Caused by: android.view.InflateException: Binary XML file line #149: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:784)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:750)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:900)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:861)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:903)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:861)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:903)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:861)
at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:469)
at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
at com.rifinew.rumahpohon.FoodDetailActivity.onCreate(FoodDetailActivity.java:40)
at android.app.Activity.performCreate(Activity.java:7378)
at android.app.Activity.performCreate(Activity.java:7369)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3161)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3318)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:113)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:71)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2044)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:226)
at android.app.ActivityThread.main(ActivityThread.java:7212)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:576)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:956)

XML activity_food_detail.xml 有点复杂我觉得把代码放在这里不好。我做错了什么?

最佳答案

问题是我不知道为什么,但是 XML

<!-- <view
android:layout_width="1dp"
android:layout_height="match_parent"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:background="@color/colorPrimary"/>-->

绘制一条小线的 VIEW 标签不知何故导致我的手机崩溃,感谢@unownsp 帮助我解决了这个错误

关于java - Android-Listview setOnItemClickListener 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59480737/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com