0

我在 stackoverflow 上搜索了类似的问题。这些解决方案似乎都不起作用。

这是我的 CustomAdapter 类。

public class ContactAdapter extends SimpleCursorAdapter {

Context cont;

public ContactAdapter(Context context, int layout, Cursor c, String[] from,
        int[] to) {
    super(context, layout, c, from, to, 0);
    cont = context;
}

@Override
public View getView(final int position, View convertView, ViewGroup parent) {
    View view = super.getView(position, convertView, parent);

    Button button = (Button)view.findViewById(R.id.delete_button);
    button.setOnClickListener(new View.OnClickListener() {
        @Override public void onClick(View v) {
            Toast.makeText(cont, position,
                    Toast.LENGTH_SHORT).show();
        }
    }); 

    return view;
}
}

根据文档,我应该在 toast 中获取当前项目的位置。但它会引发以下异常。

08-13 13:46:01.904: E/AndroidRuntime(5980): android.content.res.Resources$NotFoundException: String resource ID #0x0
08-13 13:46:01.904: E/AndroidRuntime(5980):     at android.content.res.Resources.getText(Resources.java:265)
08-13 13:46:01.904: E/AndroidRuntime(5980):     at android.widget.Toast.makeText(Toast.java:265)
08-13 13:46:01.904: E/AndroidRuntime(5980):     at com.example.databaseproject.ContactAdapter$1.onClick(ContactAdapter.java:34)
08-13 13:46:01.904: E/AndroidRuntime(5980):     at android.view.View.performClick(View.java:4091)
08-13 13:46:01.904: E/AndroidRuntime(5980):     at android.view.View$PerformClick.run(View.java:17072)
08-13 13:46:01.904: E/AndroidRuntime(5980):     at android.os.Handler.handleCallback(Handler.java:615)
08-13 13:46:01.904: E/AndroidRuntime(5980):     at android.os.Handler.dispatchMessage(Handler.java:92)
08-13 13:46:01.904: E/AndroidRuntime(5980):     at android.os.Looper.loop(Looper.java:153)
08-13 13:46:01.904: E/AndroidRuntime(5980):     at android.app.ActivityThread.main(ActivityThread.java:5034)
08-13 13:46:01.904: E/AndroidRuntime(5980):     at java.lang.reflect.Method.invokeNative(Native Method)
08-13 13:46:01.904: E/AndroidRuntime(5980):     at java.lang.reflect.Method.invoke(Method.java:511)
08-13 13:46:01.904: E/AndroidRuntime(5980):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:821)
08-13 13:46:01.904: E/AndroidRuntime(5980):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584)
08-13 13:46:01.904: E/AndroidRuntime(5980):     at dalvik.system.NativeStart.main(Native Method)

请帮忙。

4

2 回答 2

4

问题是这position是一个 int 和 Toast.makeText方法的第二个参数(如果它是 int)必须是一个资源 id。所以在这里,没有 id 的资源position,你会得到Resources$NotFoundException

如何解决?

只需将其转换为字符串position + ""

使用此代码

   button.setOnClickListener(new View.OnClickListener() {
        @Override public void onClick(View v) {
            Toast.makeText(cont, position+"",
                    Toast.LENGTH_SHORT).show();
        }
    }); 
于 2013-08-13T08:21:10.453 回答
1

我认为你已经传递了一个intToast,这会导致异常

改变你Toast的如下..

Toast.makeText(cont, String.valueOf(position),Toast.LENGTH_SHORT).show();
于 2013-08-13T08:24:40.423 回答