繁体   English   中英

在使用微调器打开的对话框上强制关闭

[英]Force close on dialog open with spinner

在尝试填充微调器之前,我能够使对话框弹出一次,因此我认为错误在于将信息加载到微调器中。 在按钮上单击我会启动一个对话框,它会因以下错误而强制关闭:

06-27 18:46:28.101: E/AndroidRuntime(26120): FATAL EXCEPTION: main
06-27 18:46:28.101: E/AndroidRuntime(26120): java.lang.IllegalStateException: Could not execute method of the activity
06-27 18:46:28.101: E/AndroidRuntime(26120):    at android.view.View$1.onClick(View.java:3609)
06-27 18:46:28.101: E/AndroidRuntime(26120):    at android.view.View.performClick(View.java:4102)
06-27 18:46:28.101: E/AndroidRuntime(26120):    at android.view.View$PerformClick.run(View.java:17126)
06-27 18:46:28.101: E/AndroidRuntime(26120):    at android.os.Handler.handleCallback(Handler.java:615)
06-27 18:46:28.101: E/AndroidRuntime(26120):    at android.os.Handler.dispatchMessage(Handler.java:92)
06-27 18:46:28.101: E/AndroidRuntime(26120):    at android.os.Looper.loop(Looper.java:155)
06-27 18:46:28.101: E/AndroidRuntime(26120):    at android.app.ActivityThread.main(ActivityThread.java:5536)
06-27 18:46:28.101: E/AndroidRuntime(26120):    at java.lang.reflect.Method.invokeNative(Native Method)
06-27 18:46:28.101: E/AndroidRuntime(26120):    at java.lang.reflect.Method.invoke(Method.java:511)
06-27 18:46:28.101: E/AndroidRuntime(26120):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1074)
06-27 18:46:28.101: E/AndroidRuntime(26120):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:841)
06-27 18:46:28.101: E/AndroidRuntime(26120):    at dalvik.system.NativeStart.main(Native Method)
06-27 18:46:28.101: E/AndroidRuntime(26120): Caused by: java.lang.reflect.InvocationTargetException
06-27 18:46:28.101: E/AndroidRuntime(26120):    at java.lang.reflect.Method.invokeNative(Native Method)
06-27 18:46:28.101: E/AndroidRuntime(26120):    at java.lang.reflect.Method.invoke(Method.java:511)
06-27 18:46:28.101: E/AndroidRuntime(26120):    at android.view.View$1.onClick(View.java:3604)
06-27 18:46:28.101: E/AndroidRuntime(26120):    ... 11 more
06-27 18:46:28.101: E/AndroidRuntime(26120): Caused by: java.lang.NullPointerException
06-27 18:46:28.101: E/AndroidRuntime(26120):    at com.example.beerportfoliopro.TasteTags.addTaste(TasteTags.java:71)

带有onclick方法按钮的页面是:

public class TasteTags extends Activity {

    BeerData e;

    String[] tastes = {
            "Dwight D. Eisenhower",
            "John F. Kennedy",
            "Lyndon B. Johnson",
            "Richard Nixon",
            "Gerald Ford",
            "Jimmy Carter",
            "Ronald Reagan",
            "George H. W. Bush",
            "Bill Clinton",
            "George W. Bush",
            "Barack Obama"
    };

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.tastetag_page);

        //get beer data
        Intent intent = getIntent();
        Bundle b = intent.getExtras();
        e = b.getParcelable("myBeerObject");

        TextView beerTitle = (TextView) findViewById(R.id.beerTitleTaste);

        beerTitle.setText(e.beerName + " Taste Profile");

        String url = myURL;

        url = url + "b=" +e.beerId;

        //async task to get beer taste tag percents
        new GetTasteJSON(this).execute(url);




    }

    public void addTaste(View v){

        // custom dialog
        final Dialog dialog = new Dialog(this);

        Spinner spinner = (Spinner) findViewById(R.id.spinner1);
        // Create an ArrayAdapter using the string array and a default spinner layout
        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
        R.array.taste_array, android.R.layout.simple_spinner_item);

        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        // Apply the adapter to the spinner
        spinner.setAdapter(adapter);


        dialog.setContentView(R.layout.add_taste_dialog);
        dialog.setTitle("Add Taste");
        dialog.show();


    }





}

如果微调框应该位于对话框中,那么问题是这样的

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

spinner为null,因为视图中没有spinner1

在此行dialog.setContentView(R.layout.add_taste_dialog);之后需要执行的操作dialog.setContentView(R.layout.add_taste_dialog); 加入

Spinner spinner = (Spinner) dialog.findViewById(R.id.spinner1);

您需要先设置对话框的视图,然后从对话框中获取所有视图元素

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM