Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.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
尝试将项目放入微调器时出错-Android_Android_Sqlite_Error Handling_Spinner_Android Spinner - Fatal编程技术网

尝试将项目放入微调器时出错-Android

尝试将项目放入微调器时出错-Android,android,sqlite,error-handling,spinner,android-spinner,Android,Sqlite,Error Handling,Spinner,Android Spinner,我目前正在尝试从SQLite数据库添加项目,并将它们放入微调器。下面显示了数据库和主要活动的代码,如果还有其他需要添加的内容,请说明。我还显示了发生的错误 错误: 02-24 14:01:59.222 23660-23660/com.example.bank_app E/AndroidRuntime﹕ FATAL EXCEPTION: main java.lang.NullPointerException at com.example.bank_app.main_menu_ac

我目前正在尝试从SQLite数据库添加项目,并将它们放入微调器。下面显示了数据库和主要活动的代码,如果还有其他需要添加的内容,请说明。我还显示了发生的错误

错误:

02-24 14:01:59.222  23660-23660/com.example.bank_app E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.NullPointerException
        at com.example.bank_app.main_menu_activity.onOptionsItemSelected(main_menu_activity.java:149)
        at android.app.Activity.onMenuItemSelected(Activity.java:2640)
        at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:1171)
        at com.android.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:735)
        at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:152)
        at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:874)
        at com.android.internal.view.menu.ActionMenuView.invokeItem(ActionMenuView.java:630)
        at com.android.internal.view.menu.ActionMenuItemView.onClick(ActionMenuItemView.java:200)
        at android.view.View.performClick(View.java:4489)
        at android.view.View$PerformClick.run(View.java:18803)
        at android.os.Handler.handleCallback(Handler.java:730)
        at android.os.Handler.dispatchMessage(Handler.java:92)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:5455)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:525)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1187)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
        at dalvik.system.NativeStart.main(Native Method)
主要活动代码:

List<String> SpinnerArray = db.getAccountsNames();

// Outputs items in SpinnerArray to logcat
/*for (int j = 0; j < SpinnerArray.size(); j++)
{
    Log.d("Output", j + ": " + SpinnerArray.get(j).toString());
}*/

ArrayAdapter spinnerAdapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item, SpinnerArray);  
spinnerAdapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
Spinner accountSpinner = (Spinner)findViewById(R.id.spinner1);
accountSpinner.setAdapter(spinnerAdapter);
谢谢你的帮助

XML-(这是用于自定义警报对话框的XML)


试试这个

ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, SpinnerArray);                    
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

Spinner accountSpinner = (Spinner) findViewById(R.id.spinner1);
accountSpinner.setAdapter(dataAdapter);       
ArrayAdapter dataAdapter=新的ArrayAdapter(这是android.R.layout.simple\u spinner\u项,spinnerray);
dataAdapter.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉项);
微调器accountSpinner=(微调器)findViewById(R.id.spinner1);
setAdapter(dataAdapter);

如您所说,id为
spinner1
的微调器位于自定义警报对话框中。但是活动中的
findViewById()
会尝试从活动视图层次结构中查找它。您的对话框不是活动层次结构的一部分。必须在对话框层次结构中搜索该对象

例如,改变

Spinner accountSpinner = (Spinner)findViewById(R.id.spinner1);

其中,
对话框
是正在显示的对话框


(您并没有真正显示您是如何扩大对话框的,所以可能有更好的方法。)

由于laalto的帮助,问题的答案如图所示

        case R.id.action_delete_account:
        {
            final Dialog dialog = new Dialog(this);
            dialog.setContentView(R.layout.delete_account);
            dialog.setTitle("Delete Account");
            dialog.setCancelable(true);

            spn = (Spinner)dialog.findViewById(R.id.spinner1);
            List<String> SpinnerArray = db.getAccountsNames();
            /*for (int j = 0; j < SpinnerArray.size(); j++)
            {
                Log.d("Output", j + ": " + SpinnerArray.get(j).toString());
            }*/

            ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,  android.R.layout.simple_spinner_item, SpinnerArray);
            dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            //Log.d("Output", Integer.toString(dataAdapter.getCount()));
            spn.setAdapter(dataAdapter);

            //TextView title = (TextView) dialog.findViewById(R.id.titleTextView);
            btnDelete = (Button) dialog.findViewById(R.id.btnDelete);
            btnCancel = (Button) dialog.findViewById(R.id.btnCancel);

            btnDelete.setOnClickListener(new View.OnClickListener()
            {
                @Override
                public void onClick(View view)
                {
                    displayListView();
                }
            });
            btnCancel.setOnClickListener(new View.OnClickListener()
            {
                @Override
                public void onClick(View view)
                {
                    dialog.cancel();
                }
            });

            dialog.show();
        }
        default:
        {
            return super.onOptionsItemSelected(item);
        }
    }
案例R.id.action\u delete\u账户:
{
最终对话框=新对话框(本);
setContentView(R.layout.delete_帐户);
对话框.setTitle(“删除帐户”);
对话框。可设置可取消(true);
spn=(微调器)dialog.findviewbyd(R.id.spinner1);
List spinnerray=db.getAccountsNames();
/*对于(int j=0;j
您的错误出现在活动的
主菜单中。java:149
您能否在活动中共享您在
onOptionsItemSelected()
回调中的代码?代码在第149行崩溃。选中它与微调器无关,而是与选项菜单相关。第149行是accountSpinner.setAdapter(spinnerAdapter);仍然无法工作,我在accountSpinner.setAdapter(dataAdapter)中遇到一个错误;代码的一部分。您确定微调器的id为“spinner1”吗?我这样问是因为我犯了这个错误,导致了一个NullPointerYes,当我将代码更改为您的代码时,上面的错误与我收到的错误相同。02-24 14:38:39.610 24953-24953/com.example.bank_app E/AndroidRuntime﹕ 致命异常:com.example.bank_app.main_menu_activity.onOptionsItemSelected(main_menu_activity.java:155)上的main java.lang.NullPointerException(activity.java:2640)上的com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:1171)谢谢!解决了我的问题!
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, SpinnerArray);                    
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

Spinner accountSpinner = (Spinner) findViewById(R.id.spinner1);
accountSpinner.setAdapter(dataAdapter);       
Spinner accountSpinner = (Spinner)findViewById(R.id.spinner1);
Spinner accountSpinner = (Spinner)dialog.findViewById(R.id.spinner1);
        case R.id.action_delete_account:
        {
            final Dialog dialog = new Dialog(this);
            dialog.setContentView(R.layout.delete_account);
            dialog.setTitle("Delete Account");
            dialog.setCancelable(true);

            spn = (Spinner)dialog.findViewById(R.id.spinner1);
            List<String> SpinnerArray = db.getAccountsNames();
            /*for (int j = 0; j < SpinnerArray.size(); j++)
            {
                Log.d("Output", j + ": " + SpinnerArray.get(j).toString());
            }*/

            ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,  android.R.layout.simple_spinner_item, SpinnerArray);
            dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            //Log.d("Output", Integer.toString(dataAdapter.getCount()));
            spn.setAdapter(dataAdapter);

            //TextView title = (TextView) dialog.findViewById(R.id.titleTextView);
            btnDelete = (Button) dialog.findViewById(R.id.btnDelete);
            btnCancel = (Button) dialog.findViewById(R.id.btnCancel);

            btnDelete.setOnClickListener(new View.OnClickListener()
            {
                @Override
                public void onClick(View view)
                {
                    displayListView();
                }
            });
            btnCancel.setOnClickListener(new View.OnClickListener()
            {
                @Override
                public void onClick(View view)
                {
                    dialog.cancel();
                }
            });

            dialog.show();
        }
        default:
        {
            return super.onOptionsItemSelected(item);
        }
    }