你如何在android studio中将数据从一种方法传递到另一种方法

阿德里安38

我正在尝试设置一个删除按钮以从表中删除客户,客户使用回收器视图显示在卡片视图中,因此每个客户都有自己的删除按钮,客户信息使用文本视图显示。我需要将客户 ID 传递给 delete 方法,以便在表中搜索要删除的特定 ID。我如何成功传递数据?

这是我目前必须尝试传递我需要的数据

 public void onBindViewHolder(@NonNull MyHolder holder, final int position) {

        holder.idText.setText(String.valueOf(id.get(position)));
        holder.nameText.setText(String.valueOf(name.get(position)));
        holder.surnameText.setText(String.valueOf(surname.get(position)));
        holder.add1Text.setText(String.valueOf(add1.get(position)));
        holder.add2Text.setText(String.valueOf(add2.get(position)));
        holder.add3Text.setText(String.valueOf(add3.get(position)));
        holder.postCodeText.setText(String.valueOf(postCode.get(position)));
        holder.phoneNumberText.setText(String.valueOf(phoneNumber.get(position)));
        holder.emailText.setText(String.valueOf(email.get(position)));
        
        GlobalVars.id = holder.idText.getText().toString();

        holder.delete.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                db.deleteCustomer(GlobalVars.id);
            }
        });
    }

这是我的删除方法

public long deleteCustomer(String id)
    {
        SQLiteDatabase db = this.getWriteableDatabase();
        ContentValues idValue = new ContentValues();
        idValue.put(CUSTOMER_ID, id);

        return db.delete(TABLE_NAME, "where Customer_ID = " + idValue, null);
    }

当我运行应用程序时,它会显示客户和按钮,但是当我单击任何按钮时,我会看到一个空白屏幕,然后它会返回到我的登录屏幕。

这些是出现在 logcat 中的错误

2021-05-01 12:16:26.212 18729-18729/com.example.rowlandsflooringapp E/Zygote: isWhitelistProcess - 进程被列入白名单 2021-05-01 12:16:26.212 18729/Zflooringappe/Zygote :accessInfo:1 2021-05-01 12:16:26.244 18729-18729/com.example.rowlandsflooringapp E/andsflooringap:runtime_flags 中设置的未知位:0x8000 2021-05-01: 15872196/15872196 example.rowlandsflooringapp E/AndroidRuntime:致命异常:主进程:com.example.rowlandsflooringapp,PID:18729 java.lang.NullPointerException:尝试调用虚拟方法'java.io.File android.content.Context.getDatabasePath(java.lang .String)' 在 android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:445) at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:415) 在 com.example.rowlandsflooringapp.CustomerDB.deleteCustomer(CustomerDB.java:70) 在 com.example.rowlandsflooringapp.CustomerAdapter$1.onClick(CustomerAdapter.java:73) 在 android.view.View.performClick(View.java: 7862) 在 android.widget.TextView.performClick(TextView.java:15004) 在 android.view.View.performClickInternal(View.java:7831) 在 android.view.View.access$3600(View.java:879) 在 android .view.View$PerformClick.run(View.java:29359) 在 android.os.Handler.handleCallback(Handler.java:883) 在 android.os.Handler.dispatchMessage(Handler.java:100) 在 android.os。 Looper.loop(Looper.java:237) at android.app.ActivityThread.main(ActivityThread.java:8167) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$ MethodAndArgsCaller.run(RuntimeInit.java:496) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1100)1100)1100)example.rowlandsflooringapp.CustomerDB.deleteCustomer(CustomerDB.java:70) at com.example.rowlandsflooringapp.CustomerAdapter$1.onClick(CustomerAdapter.java:73) at android.view.View.performClick(View.java:7862) at android。 widget.TextView.performClick(TextView.java:15004) at android.view.View.performClickInternal(View.java:7831) at android.view.View.access$3600(View.java:879) at android.view.View$ PerformClick.run(View.java:29359) at android.os.Handler.handleCallback(Handler.java:883) at android.os.Handler.dispatchMessage(Handler.java:100) at android.os.Looper.loop(Looper) .java:237) 在 android.app.ActivityThread.main(ActivityThread.java:8167) 在 java.lang.reflect.Method.invoke(Native Method) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit .java:496) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1100)example.rowlandsflooringapp.CustomerDB.deleteCustomer(CustomerDB.java:70) at com.example.rowlandsflooringapp.CustomerAdapter$1.onClick(CustomerAdapter.java:73) at android.view.View.performClick(View.java:7862) at android。 widget.TextView.performClick(TextView.java:15004) at android.view.View.performClickInternal(View.java:7831) at android.view.View.access$3600(View.java:879) at android.view.View$ PerformClick.run(View.java:29359) at android.os.Handler.handleCallback(Handler.java:883) at android.os.Handler.dispatchMessage(Handler.java:100) at android.os.Looper.loop(Looper) .java:237) 在 android.app.ActivityThread.main(ActivityThread.java:8167) 在 java.lang.reflect.Method.invoke(Native Method) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit .java:496) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1100)rowlandsflooringapp.CustomerDB.deleteCustomer(CustomerDB.java:70) at com.example.rowlandsflooringapp.CustomerAdapter$1.onClick(CustomerAdapter.java:73) at android.view.View.performClick(View.java:7862) at android.widget。 TextView.performClick(TextView.java:15004) at android.view.View.performClickInternal(View.java:7831) at android.view.View.access$3600(View.java:879) at android.view.View$PerformClick。运行(View.java:29359) at android.os.Handler.handleCallback(Handler.java:883) at android.os.Handler.dispatchMessage(Handler.java:100) at android.os.Looper.loop(Looper.java) :237) at android.app.ActivityThread.main(ActivityThread.java:8167) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java) :496) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1100)rowlandsflooringapp.CustomerDB.deleteCustomer(CustomerDB.java:70) at com.example.rowlandsflooringapp.CustomerAdapter$1.onClick(CustomerAdapter.java:73) at android.view.View.performClick(View.java:7862) at android.widget。 TextView.performClick(TextView.java:15004) at android.view.View.performClickInternal(View.java:7831) at android.view.View.access$3600(View.java:879) at android.view.View$PerformClick。运行(View.java:29359) at android.os.Handler.handleCallback(Handler.java:883) at android.os.Handler.dispatchMessage(Handler.java:100) at android.os.Looper.loop(Looper.java) :237) at android.app.ActivityThread.main(ActivityThread.java:8167) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java) :496) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1100)deleteCustomer(CustomerDB.java:70) at com.example.rowlandsflooringapp.CustomerAdapter$1.onClick(CustomerAdapter.java:73) at android.view.View.performClick(View.java:7862) at android.widget.TextView.performClick( TextView.java:15004) 在 android.view.View.performClickInternal(View.java:7831) 在 android.view.View.access$3600(View.java:879) 在 android.view.View$PerformClick.run(View. java:29359) 在 android.os.Handler.handleCallback(Handler.java:883) 在 android.os.Handler.dispatchMessage(Handler.java:100) 在 android.os.Looper.loop(Looper.java:237) 在android.app.ActivityThread.main(ActivityThread.java:8167) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:496) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1100)deleteCustomer(CustomerDB.java:70) at com.example.rowlandsflooringapp.CustomerAdapter$1.onClick(CustomerAdapter.java:73) at android.view.View.performClick(View.java:7862) at android.widget.TextView.performClick( TextView.java:15004) 在 android.view.View.performClickInternal(View.java:7831) 在 android.view.View.access$3600(View.java:879) 在 android.view.View$PerformClick.run(View. java:29359) 在 android.os.Handler.handleCallback(Handler.java:883) 在 android.os.Handler.dispatchMessage(Handler.java:100) 在 android.os.Looper.loop(Looper.java:237) 在android.app.ActivityThread.main(ActivityThread.java:8167) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:496) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1100)rowlandsflooringapp.CustomerAdapter$1.onClick(CustomerAdapter.java:73) at android.view.View.performClick(View.java:7862) at android.widget.TextView.performClick(TextView.java:15004) at android.view.View。 performClickInternal(View.java:7831) at android.view.View.access$3600(View.java:879) at android.view.View$PerformClick.run(View.java:29359) at android.os.Handler.handleCallback( Handler.java:883) 在 android.os.Handler.dispatchMessage(Handler.java:100) 在 android.os.Looper.loop(Looper.java:237) 在 android.app.ActivityThread.main(ActivityThread.java:8167) ) 在 java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:496) at com.android.internal.os.ZygoteInit.main(ZygoteInit) .java:1100)rowlandsflooringapp.CustomerAdapter$1.onClick(CustomerAdapter.java:73) at android.view.View.performClick(View.java:7862) at android.widget.TextView.performClick(TextView.java:15004) at android.view.View。 performClickInternal(View.java:7831) at android.view.View.access$3600(View.java:879) at android.view.View$PerformClick.run(View.java:29359) at android.os.Handler.handleCallback( Handler.java:883) 在 android.os.Handler.dispatchMessage(Handler.java:100) 在 android.os.Looper.loop(Looper.java:237) 在 android.app.ActivityThread.main(ActivityThread.java:8167) ) 在 java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:496) at com.android.internal.os.ZygoteInit.main(ZygoteInit) .java:1100)performClick(View.java:7862) at android.widget.TextView.performClick(TextView.java:15004) at android.view.View.performClickInternal(View.java:7831) at android.view.View.access$3600(View. java:879) 在 android.view.View$PerformClick.run(View.java:29359) 在 android.os.Handler.handleCallback(Handler.java:883) 在 android.os.Handler.dispatchMessage(Handler.java:100) ) 在 android.os.Looper.loop(Looper.java:237) 在 android.app.ActivityThread.main(ActivityThread.java:8167) 在 java.lang.reflect.Method.invoke(Native Method) 在 com.android。 internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:496) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1100)performClick(View.java:7862) at android.widget.TextView.performClick(TextView.java:15004) at android.view.View.performClickInternal(View.java:7831) at android.view.View.access$3600(View. java:879) 在 android.view.View$PerformClick.run(View.java:29359) 在 android.os.Handler.handleCallback(Handler.java:883) 在 android.os.Handler.dispatchMessage(Handler.java:100) ) 在 android.os.Looper.loop(Looper.java:237) 在 android.app.ActivityThread.main(ActivityThread.java:8167) 在 java.lang.reflect.Method.invoke(Native Method) 在 com.android。 internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:496) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1100)view.View$PerformClick.run(View.java:29359) at android.os.Handler.handleCallback(Handler.java:883) at android.os.Handler.dispatchMessage(Handler.java:100) at android.os.Looper .loop(Looper.java:237) at android.app.ActivityThread.main(ActivityThread.java:8167) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller .run(RuntimeInit.java:496) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1100)view.View$PerformClick.run(View.java:29359) at android.os.Handler.handleCallback(Handler.java:883) at android.os.Handler.dispatchMessage(Handler.java:100) at android.os.Looper .loop(Looper.java:237) at android.app.ActivityThread.main(ActivityThread.java:8167) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller .run(RuntimeInit.java:496) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1100)android.internal.os.ZygoteInit.main(ZygoteInit.java:1100)android.internal.os.ZygoteInit.main(ZygoteInit.java:1100)

阿德里安38

因此,经过多次尝试但失败后,我决定再次从头开始创建删除方法,这就是我最终得到的结果,并且效果很好。

数据库助手中的删除方法

void deleteOneRow(String row_id){
        SQLiteDatabase db = this.getWritableDatabase();
        long result = db.delete(TABLE_NAME, "_id=?", new String[]{row_id});
        if(result == -1){
            Toast.makeText(context, "Failed to Delete.", Toast.LENGTH_SHORT).show();
        }else{
            Toast.makeText(context, "Successfully Deleted.", Toast.LENGTH_SHORT).show();
        }

调用删除方法

void confirmDialog(){
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("Delete " + name + " ?");
        builder.setMessage("Are you sure you want to delete " + name + " ?");
        builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                MyDatabaseHelper myDB = new MyDatabaseHelper(UpdateActivity.this);
                myDB.deleteOneRow(id);
                finish();
            }
        });
        builder.setNegativeButton("No", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {

            }
        });
        builder.create().show();
    }
        }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在scrapy中将信息从一种方法传递到另一种方法

如何将变量从一种方法传递到另一种方法?

如何将值从一种方法传递到另一种方法?

如何在同一活动中将变量从一种方法传递到另一种方法

如何在java中将Int从一种方法返回到另一种方法

如何将值从一种方法传递给另一种方法

如何在Node.js中将数据从一种方法传输到另一种方法?

如何将更新的全局类变量从一种方法传递到另一种方法?

如何将int值从一种方法转换为另一种方法

如何从一种方法调用参数到另一种方法?

Django Rest Framework 如何从一种方法调用另一种方法中的变量?

在Spring Boot应用程序中如何使用模型数据从一种控制器方法重定向到另一种方法

Laravel如何在同一控制器中将发布数据从一种发布方法传递到另一种发布方法?

如何将一种方法的返回值传递给另一种方法?

如何将一种方法作为参数传递给另一种方法?

如何将一种方法的“自我”价值传递给另一种方法?

如何从另一种方法正确调用一种方法

如何从另一种方法使用数组?

Android将参数从一种方法获取到另一类的另一种方法

如何在另一种方法中传递参数?

如何在另一种方法的方法中使用来自 HashMap 的数据?

如何在另一种方法中使用一种方法的“返回”值

如何从一种方法获取变量到另一种方法?如何从假设到 void add() 中获取 int x?

如何将局部变量的值传递给另一种方法

Flutter如何通过另一种方法从Firestore传递document.length?

如何将代码生成的控件传递给另一种方法

单位转换程序-如何将变量从一种方法转换为另一种方法?

如何将变量从一种方法访问到 ruby 中的另一种方法?

我如何使用表格视图将选择模型从一种方法获取到其他类的另一种方法?