2017-04-17 164 views
0

当我声明数组适配器最多为如果看不到公众的应用程序崩溃时,我刚开始它安卓arrayadapter申报错误

,但是当我宣布它的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(); 
      } 
     }); 
    } 
} 

回答

0
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);