android 数组适配器声明错误
android arrayadapter declaration Error
当我将数组适配器声明为 golbal 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();
}
});
}
}
public ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(MainActivity.this , android.R.layout.simple_list_item_1 ,arrayList);
使用此行,您将尝试在初始化之前访问 MainActivity。当你在 onClick
中键入它时,它将在你在 onCreate
中并且 class 已经初始化时执行。
至于如何修复-首先声明变量
public ArrayAdapter<String> arrayAdapter;
然后在onCreate
里面
arrayAdapter = new ArrayAdapter<String>(MainActivity.this , android.R.layout.simple_list_item_1 ,arrayList);
当我将数组适配器声明为 golbal 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();
}
});
}
}
public ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(MainActivity.this , android.R.layout.simple_list_item_1 ,arrayList);
使用此行,您将尝试在初始化之前访问 MainActivity。当你在 onClick
中键入它时,它将在你在 onCreate
中并且 class 已经初始化时执行。
至于如何修复-首先声明变量
public ArrayAdapter<String> arrayAdapter;
然后在onCreate
里面
arrayAdapter = new ArrayAdapter<String>(MainActivity.this , android.R.layout.simple_list_item_1 ,arrayList);