首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android-Listview setOnItemClickListener错误

Android-Listview setOnItemClickListener错误
EN

Stack Overflow用户
提问于 2019-12-26 01:56:00
回答 1查看 343关注 0票数 1

我有一个MenuActivity,其中有一个显示餐厅菜单的列表视图,它使用了名为FoodAdapter的适配器。它起作用了,我正在尝试制作菜单的细节,如果你点击菜单,那么带有食物细节的FoodDetailActivity就会出现。

单击“MenuActivity ListView”>“FoodDetailActivity with food”。

但是问题出现了,当我点击listview菜单上的项目时,空白屏幕出现了大约500ms,然后回到了MainActivity。我的假设是,可能是我在MenuActivity.java上的这段代码的putExtra意图中做了一些错误的事情,或者我的手机不支持布局。

代码语言:javascript
复制
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

代码语言:javascript
复制
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

代码语言:javascript
复制
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;
    }
}

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

代码语言:javascript
复制
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有点复杂,我认为把代码放在这里不太好。我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-26 20:04:37

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

代码语言:javascript
复制
<!-- <view
                android:layout_width="1dp"
                android:layout_height="match_parent"
                android:layout_marginTop="10dp"
                android:layout_marginBottom="10dp"
                android:background="@color/colorPrimary"/>-->

绘制一条小线的视图标签不知何故在我的手机上发生了错误崩溃,感谢@unownsp帮助我解决这个错误

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59480737

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档