Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何解决Java.lang.NullPointerException:尝试调用虚拟方法?_Java_Android_Nullpointerexception - Fatal编程技术网

如何解决Java.lang.NullPointerException:尝试调用虚拟方法?

如何解决Java.lang.NullPointerException:尝试调用虚拟方法?,java,android,nullpointerexception,Java,Android,Nullpointerexception,我正在尝试向上下文菜单中添加操作,即编辑和删除。这些操作将编辑或删除数据库表中的条目。 当按下edit(编辑)或delete(删除)选项时,应访问表“db_table”以检索与id主键相对应的“friend(朋友)”行。id由“info.position”确定,dManager.retrieveFriend()用于检索行 当…dManager.retrieveFriend(String.valueOf(item.position));名为“我得到下面的错误”,应用程序崩溃 有人能解释一下我为什么

我正在尝试向上下文菜单中添加操作,即编辑和删除。这些操作将编辑或删除数据库表中的条目。 当按下edit(编辑)或delete(删除)选项时,应访问表“db_table”以检索与id主键相对应的“friend(朋友)”行。id由“info.position”确定,dManager.retrieveFriend()用于检索行

当…dManager.retrieveFriend(String.valueOf(item.position));名为“我得到下面的错误”,应用程序崩溃

有人能解释一下我为什么会出现下面的错误吗。如果您需要更多的代码或信息,请询问,这是我第一次使用堆栈溢出

上下文菜单项“处理程序”:

 public boolean onContextItemSelected(MenuItem item)
{

    String editFriend = dManager.retrieveFriend(String.valueOf(info.position));
    FragmentManager manager = getFragmentManager();
    switch(item.getItemId())
    {
        case 0:
            Log.i("Friend contextual edit", "0");
            edit_Friend_Dialog edit_Friend_Dialog = new edit_Friend_Dialog();
            edit_Friend_Dialog.show(manager, "Edit Friend");

            Bundle bundle = new Bundle();
            bundle.putString("1", editFriend);
            edit_Friend_Dialog.setArguments(bundle);
            break;
        case 1:
            Log.i("Friend contextual del", "1");
            Log.i("Postion", String.valueOf(info.position));
            String id = (friendList.getItemAtPosition(info.position).toString());
            id = id.substring(0, id.indexOf(" "));
            id = id.replace(",", "");
            Log.i("id", id);
            dManager.removeRowFriend("2");
            friends = dManager.retrieveRowsFriends();
            break;


    }
    return true;
}
public String retrieveFriend(String id)
{
    String[] coloumns = new String[] {"id","age","gender", "name", "last_name", "address"};
    // calling elements    in an array
    cursor =  this.db.rawQuery("select * from " + DB_TABLE + " where id = " + id, null, null);
    if (cursor != null)
    {
        cursor.moveToFirst();
        String friend = "";
        friend = cursor.getString(1) + ", " + cursor.getString(2) + ", " + cursor.getString(3) + ", " + cursor.getString(4) + ", " + cursor.getString(5);
        return friend;
    }
    return null;
}
 9-18 20:17:08.474  20803-20803/com.example.mm.oggy E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: com.example.mm.oggy, PID: 20803
    **java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.example.mm.oggy.DatabaseManager.retrieveFriend(java.lang.String)' on a null object reference
            at com.example.mm.oggy.menu1_Fragment.onContextItemSelected(menu1_Fragment.java:80)**
            at android.support.v4.app.Fragment.performContextItemSelected(Fragment.java:2085)
            at android.support.v4.app.FragmentManagerImpl.dispatchContextItemSelected(FragmentManager.java:2122)
            at android.support.v4.app.FragmentController.dispatchContextItemSelected(FragmentController.java:308)
            at android.support.v4.app.FragmentActivity.onMenuItemSelected(FragmentActivity.java:334)
            at android.support.v7.app.AppCompatActivity.onMenuItemSelected(AppCompatActivity.java:147)
            at android.support.v7.internal.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:100)
            at com.android.internal.policy.impl.PhoneWindow$DialogMenuCallback.onMenuItemSelected(PhoneWindow.java:4701)
            at com.android.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:761)
            at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:152)
            at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:904)
            at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:894)
            at com.android.internal.view.menu.MenuDialogHelper.onClick(MenuDialogHelper.java:167)
            at com.android.internal.app.AlertController$AlertParams$3.onItemClick(AlertController.java:1082)
            at android.widget.AdapterView.performItemClick(AdapterView.java:305)
            at android.widget.AbsListView.performItemClick(AbsListView.java:1146)
            at android.widget.AbsListView$PerformClick.run(AbsListView.java:3053)
            at android.widget.AbsListView$3.run(AbsListView.java:3860)
            at android.os.Handler.handleCallback(Handler.java:739)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5257)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
数据库管理器(dManager)检索朋友:

 public boolean onContextItemSelected(MenuItem item)
{

    String editFriend = dManager.retrieveFriend(String.valueOf(info.position));
    FragmentManager manager = getFragmentManager();
    switch(item.getItemId())
    {
        case 0:
            Log.i("Friend contextual edit", "0");
            edit_Friend_Dialog edit_Friend_Dialog = new edit_Friend_Dialog();
            edit_Friend_Dialog.show(manager, "Edit Friend");

            Bundle bundle = new Bundle();
            bundle.putString("1", editFriend);
            edit_Friend_Dialog.setArguments(bundle);
            break;
        case 1:
            Log.i("Friend contextual del", "1");
            Log.i("Postion", String.valueOf(info.position));
            String id = (friendList.getItemAtPosition(info.position).toString());
            id = id.substring(0, id.indexOf(" "));
            id = id.replace(",", "");
            Log.i("id", id);
            dManager.removeRowFriend("2");
            friends = dManager.retrieveRowsFriends();
            break;


    }
    return true;
}
public String retrieveFriend(String id)
{
    String[] coloumns = new String[] {"id","age","gender", "name", "last_name", "address"};
    // calling elements    in an array
    cursor =  this.db.rawQuery("select * from " + DB_TABLE + " where id = " + id, null, null);
    if (cursor != null)
    {
        cursor.moveToFirst();
        String friend = "";
        friend = cursor.getString(1) + ", " + cursor.getString(2) + ", " + cursor.getString(3) + ", " + cursor.getString(4) + ", " + cursor.getString(5);
        return friend;
    }
    return null;
}
 9-18 20:17:08.474  20803-20803/com.example.mm.oggy E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: com.example.mm.oggy, PID: 20803
    **java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.example.mm.oggy.DatabaseManager.retrieveFriend(java.lang.String)' on a null object reference
            at com.example.mm.oggy.menu1_Fragment.onContextItemSelected(menu1_Fragment.java:80)**
            at android.support.v4.app.Fragment.performContextItemSelected(Fragment.java:2085)
            at android.support.v4.app.FragmentManagerImpl.dispatchContextItemSelected(FragmentManager.java:2122)
            at android.support.v4.app.FragmentController.dispatchContextItemSelected(FragmentController.java:308)
            at android.support.v4.app.FragmentActivity.onMenuItemSelected(FragmentActivity.java:334)
            at android.support.v7.app.AppCompatActivity.onMenuItemSelected(AppCompatActivity.java:147)
            at android.support.v7.internal.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:100)
            at com.android.internal.policy.impl.PhoneWindow$DialogMenuCallback.onMenuItemSelected(PhoneWindow.java:4701)
            at com.android.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:761)
            at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:152)
            at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:904)
            at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:894)
            at com.android.internal.view.menu.MenuDialogHelper.onClick(MenuDialogHelper.java:167)
            at com.android.internal.app.AlertController$AlertParams$3.onItemClick(AlertController.java:1082)
            at android.widget.AdapterView.performItemClick(AdapterView.java:305)
            at android.widget.AbsListView.performItemClick(AbsListView.java:1146)
            at android.widget.AbsListView$PerformClick.run(AbsListView.java:3053)
            at android.widget.AbsListView$3.run(AbsListView.java:3860)
            at android.os.Handler.handleCallback(Handler.java:739)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5257)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Menu1\u fragment.java

    public class menu1_Fragment extends android.support.v4.app.Fragment {
    public ListView friendList;
    private String friends;
    public DatabaseManager dManager;
    public AdapterView.AdapterContextMenuInfo info;
    View rootview;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {

        rootview = inflater.inflate(R.layout.menu1_layout, container, false);
        return rootview;
    }

    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        final DatabaseManager dManager = new DatabaseManager(getContext());
        setHasOptionsMenu(true);
        friendList = (ListView) getView().findViewById(R.id.friendsList);
        registerForContextMenu(friendList);

        //retrieve all records from table and store in string
        friends = dManager.retrieveRowsFriends();
        String friendsList[] = friends.split("\\r?\\n");

        friendList.setAdapter(new ArrayAdapter<String>(getActivity().getApplicationContext(), R.layout.item, friendsList));
        friendList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view, int position, long code) {
                String id = (friendList.getItemAtPosition(position).toString());
                id = id.substring(0, id.indexOf(" "));
                id = id.replace(",", "");
                dManager.removeRowFriend(id);
            }
        });

    }
    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater)
    {
        inflater.inflate(R.menu.activity_itemdetail, menu);
        setMenuVisibility(true);

    }

    @Override
    public void onCreateContextMenu(ContextMenu menu, View veiw, ContextMenu.ContextMenuInfo menuInfo)
    {
        if(veiw.getId() == R.id.friendsList)
        {
            info = (AdapterView.AdapterContextMenuInfo) menuInfo;
            //menu.setHeaderTitle(friendList[info.position]);
            String[] menuItems = getResources().getStringArray(R.array.menu);
            for(int i = 0; i< menuItems.length; i++)
            {
                menu.add(Menu.NONE, i, i, menuItems[i]);
            }
        }
    }
    @Override
    public boolean onContextItemSelected(MenuItem item)
    {
        String editFriend = dManager.retrieveFriend(String.valueOf(info.position));
        FragmentManager manager = getFragmentManager();
        switch(item.getItemId())
        {
            case 0:
                Log.i("Friend contextual edit", "0");
                edit_Friend_Dialog edit_Friend_Dialog = new edit_Friend_Dialog();
                edit_Friend_Dialog.show(manager, "Edit Friend");

                Bundle bundle = new Bundle();
                bundle.putString("1", editFriend);
                edit_Friend_Dialog.setArguments(bundle);
                break;
            case 1:
                Log.i("Friend contextual del", "1");
                Log.i("Postion", String.valueOf(info.position));
                String id = (friendList.getItemAtPosition(info.position).toString());
                id = id.substring(0, id.indexOf(" "));
                id = id.replace(",", "");
                Log.i("id", id);
                dManager.removeRowFriend("2");
                friends = dManager.retrieveRowsFriends();
                break;


        }
        return true;
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item)
    {
        // handle item selection
        FragmentManager manager = getFragmentManager();
        switch (item.getItemId()) {
            case R.id.add_item:
                add_Friend_Dialog add_Friend_Dialog = new add_Friend_Dialog();
                add_Friend_Dialog.show(manager, "Add Friend");
                return true;
            case R.id.remove_friend:
                remove_Friend_Dialog remove_Friend_Dialog = new remove_Friend_Dialog();
                remove_Friend_Dialog.show(manager, "Remove Friend");
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }

    }
}

dManager
在异常中指定的行处为空。

如何检查?为什么它是空的?我在前面的“menu1_fragment.java”中声明并使用了它,还有关于如何修复它的想法吗?好吧,您以前没有使用过它。你只觉得你有。显然,事件的顺序与你所想的不同。