【问题标题】:android arrayadapter declaration Errorandroid arrayadapter 声明错误
【发布时间】:2017-04-17 22:46:15
【问题描述】:

当我将数组适配器声明为 gobal public 时,当我启动它时应用程序崩溃

但是当我在 onClick 方法中声明它时它工作正常

我需要知道发生了什么?

package com.rafahya.myapplication;

import android.content.DialogInterface;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Toast;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {
    public ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(MainActivity.this , android.R.layout.simple_list_item_1 ,arrayList);
    public ArrayList<String> arrayList = new ArrayList<String>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        arrayList.add("momen");
        arrayList.add("ahmed");
        arrayList.add("Amin");
        Button button = (Button)findViewById(R.id.ok);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                AlertDialog.Builder momen = new AlertDialog.Builder(MainActivity.this)
                        .setTitle("Enter the Zip Code")
                        .setAdapter(arrayAdapter , new DialogInterface.OnClickListener() {

                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                Toast.makeText(MainActivity.this , "Momen" ,Toast.LENGTH_LONG).show();
                            }
                        });
                momen.show();
            }
        });
    }
}

【问题讨论】:

    标签: java android arrays adapter android-arrayadapter


    【解决方案1】:
    public ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(MainActivity.this , android.R.layout.simple_list_item_1 ,arrayList);
    

    通过这一行,您尝试在 MainActivity 初始化之前访问它。当您在 onClick 中键入此内容时,它将在您位于 onCreate 中并且该类已初始化时执行。

    至于如何修复它-首先声明变量

    public ArrayAdapter<String> arrayAdapter;
    

    然后在onCreate里面

    arrayAdapter = new ArrayAdapter<String>(MainActivity.this , android.R.layout.simple_list_item_1 ,arrayList);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-09
      • 1970-01-01
      • 2015-02-20
      • 1970-01-01
      • 2014-12-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多