Android EditText getText崩溃

Android EditText getText崩溃,android,android-edittext,Android,Android Edittext,看起来很简单的练习,但不知怎么搞砸了我的程序。尝试检索用户在EditText字段中输入的字符串。当我点击提交按钮时,我崩溃了。再次感谢 以下是代码和LogCat信息: public class FindEventsActivity extends Activity implements LocationListener { GeoPoint searchFrom; private static final int USE_CURRENT_COORDINATES = 0;

看起来很简单的练习,但不知怎么搞砸了我的程序。尝试检索用户在EditText字段中输入的字符串。当我点击提交按钮时,我崩溃了。再次感谢

以下是代码和LogCat信息:

public class FindEventsActivity extends Activity implements LocationListener {

    GeoPoint searchFrom;
    private static final int USE_CURRENT_COORDINATES = 0;
    private static final int ENTER_CITY = 1;
    private static final int ENTER_ZIP = 2;
    private static final int USE_MAP = 3;
    private static final int RESULT_FROM_MAP = 1;
    Context context;
    String cityState;
    Geocoder geocoder;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_find_events);
        context = this;
        setClickListeners();
    }

private void setClickListeners() {

        RelativeLayout locationBox = (RelativeLayout) findViewById(R.id.locationBox);
        locationBox.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v) {
                final CharSequence[] methods = {"Use Current Location", "Enter City / State" , "Enter Zip Code", "Use Map"};

                AlertDialog.Builder chooser = new AlertDialog.Builder(FindEventsActivity.this);

                chooser.setTitle("Choose Your Search Location Method").setItems(methods, new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int position) {
                        switch (position) {
                            case USE_CURRENT_COORDINATES:
                                searchFrom = getCurrentCoordinates();
                                break;
                            case ENTER_CITY:
                                searchFrom = getFromCityState();
                                break;

                        }
                    }

                });

                chooser.show();
            }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.find_events, menu);
        return true;
    }

    private GeoPoint getCurrentCoordinates() {

        if (isGooglePlay()) {
            Location lastKnownLocation = getLastKnownLocation();
            int lat = (int) (lastKnownLocation.getLatitude() * 1E6);
            int lng = (int) (lastKnownLocation.getLongitude() * 1E6);
            return new GeoPoint(lat, lng);
        }

        return null;
    }

    public void submitButtonOnClick(View view) {

        System.err.println("inside onTouch");   

        EditText city_entry = (EditText) view.findViewById(R.id.city_entry);
        Spinner state = (Spinner) findViewById(R.id.state_spinner);

        System.err.println("here"); 

        System.err.println(city_entry.getText().toString());
        System.err.println("city string captured");
        System.err.println(state.getSelectedItem().toString());

        cityState = city_entry.getText().toString() + ", " + state.getSelectedItem().toString();
        Toast.makeText(getApplicationContext(), cityState, Toast.LENGTH_LONG).show();

    }

    private GeoPoint getFromCityState() {

        LayoutInflater inflater = LayoutInflater.from(this);
        View view = inflater.inflate(R.layout.city_state_entry, null);
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setView(view);

        //setContentView(R.layout.city_state_entry);

        //Button submitButton = (Button) findViewById(R.id.submitButton);
        System.err.println("About to create onClickListener");

        // create alert dialog
        AlertDialog alertDialog = builder.create();

        alertDialog.show();

        return null;
    }


    @Override
    public void onLocationChanged(Location arg0) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onProviderDisabled(String arg0) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onProviderEnabled(String arg0) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
        // TODO Auto-generated method stub
    }

    private Location getLastKnownLocation() {
        LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);

        /* Verify that the gps is turned on */
        if ( !locationManager.isProviderEnabled( LocationManager.GPS_PROVIDER ) ) {
            buildAlertMessageNoGps();
        }

        Criteria criteria = new Criteria();
        criteria.setAccuracy(Criteria.ACCURACY_FINE);
        criteria.setAltitudeRequired(false);
        criteria.setBearingRequired(false);
        criteria.setCostAllowed(false);
        criteria.setPowerRequirement(Criteria.POWER_HIGH);

        String provider = locationManager.getBestProvider(criteria, true);

        if (provider == null) {
            onProviderDisabled(null);
        }

        Location location = locationManager.getLastKnownLocation(provider);

        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 300000, 5000, this);

        if (location != null) {
          System.out.println("Provider " + provider + " has been selected.");
          onLocationChanged(location);
          return location;
        } 

        return null;
    }

    private void buildAlertMessageNoGps() {
        final AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setMessage("Your GPS seems to be disabled, do you want to enable it?")
               .setCancelable(false)
               .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                   public void onClick(@SuppressWarnings("unused") final DialogInterface dialog, @SuppressWarnings("unused") final int id) {
                       startActivity(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS));
                   }
               })
               .setNegativeButton("No", new DialogInterface.OnClickListener() {
                   public void onClick(final DialogInterface dialog, @SuppressWarnings("unused") final int id) {
                        dialog.cancel();
                   }
               });
        final AlertDialog alert = builder.create();
        alert.show();
    }

    private boolean isGooglePlay() {
        /* This function checks to make sure that the Google Play service is installed on the user's phone */
        int status = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
        if (status != ConnectionResult.SUCCESS) {
            ((Dialog) GooglePlayServicesUtil.getErrorDialog(status, this, 10)).show();
            //Toast.makeText(this, "Google Play Services is not available. Check your setup.", Toast.LENGTH_SHORT).show();
            return false;
        }

        return true;
    }


}




<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/city_state_entry"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:background="@drawable/background"
    android:padding="10dp" >

    <TextView 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/city_state_title"
        android:textColor="#000000"
        android:layout_gravity="center_horizontal"
        android:paddingBottom="10dip"
        />

    <TextView
        android:id="@+id/enter_city"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/enter_city" />

    <EditText
        android:id="@+id/city_entry"
        android:inputType="textCapWords"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
        <requestFocus />
    </EditText>

    <TextView
        android:id="@+id/enter_state"
        android:layout_marginTop="10dip"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/select_state" />

    <Spinner
        android:id="@+id/state_spinner"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:entries="@array/state_abbreviations" />

    <LinearLayout 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_marginTop="20dip"
        android:layout_gravity="center_horizontal"
        android:paddingBottom="10dp">

        <Button
            android:id="@+id/submitButton"
            style="@style/ButtonText"
            android:onClick="submitButtonOnClick"
            android:layout_gravity="center_horizontal"
            android:layout_width="200dp"
            android:layout_height="wrap_content"
            android:layout_marginBottom="10dp"
            android:background="@drawable/blue_button"
            android:text="@string/submit" />

    </LinearLayout>

</LinearLayout>
公共类FindEventsActivity扩展活动实现LocationListener{
地质点搜索;
私有静态最终整数使用当前坐标=0;
私人静态最终整数输入城市=1;
私有静态final int ENTER_ZIP=2;
私有静态最终整数使用_MAP=3;
私有静态最终整型结果来自于映射=1;
语境;
串晶;
地理编码器;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u find\u events);
上下文=这个;
setClickListeners();
}
私有void setClickListeners(){
RelativeLayout locationBox=(RelativeLayout)findViewById(R.id.locationBox);
locationBox.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
final CharSequence[]方法={“使用当前位置”、“输入城市/州”、“输入邮政编码”、“使用地图”};
AlertDialog.Builder选择器=新建AlertDialog.Builder(FindEventsActivity.this);
setTitle(“选择您的搜索位置方法”).setItems(方法,new DialogInterface.OnClickListener(){
@凌驾
公共void onClick(对话框接口对话框,int位置){
开关(位置){
案例使用当前坐标:
searchFrom=getCurrentCoordinates();
打破
案例输入城市:
searchFrom=getFromCityState();
打破
}
}
});
chooser.show();
}
});
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
getMenuInflater().充气(R.menu.find_事件,菜单);
返回true;
}
专用地质点getCurrentCoordinates(){
如果(isGooglePlay()){
位置lastKnownLocation=getLastKnownLocation();
int lat=(int)(lastKnownLocation.getLatitude()*1E6);
int lng=(int)(lastnownlocation.getLongitude()*1E6);
返回新的地质点(纬度、液化天然气);
}
返回null;
}
公共无效提交按钮取消单击(查看){
System.err.println(“内部onTouch”);
EditText city_entry=(EditText)view.findviewbyd(R.id.city_entry);
微调器状态=(微调器)findViewById(R.id.state\u微调器);
System.err.println(“此处”);
System.err.println(city_entry.getText().toString());
System.err.println(“捕获的城市字符串”);
System.err.println(state.getSelectedItem().toString());
cityState=city_entry.getText().toString()+,“+state.getSelectedItem().toString();
Toast.makeText(getApplicationContext(),cityState,Toast.LENGTH_LONG).show();
}
专用地质点getFromCityState(){
LayoutFlater充气机=LayoutFlater.from(本机);
视图=充气机。充气(R.layout.city\u state\u条目,空);
AlertDialog.Builder=新建AlertDialog.Builder(此);
builder.setView(视图);
//setContentView(R.layout.city\u state\u条目);
//按钮submitButton=(按钮)findViewById(R.id.submitButton);
System.err.println(“即将创建onClickListener”);
//创建警报对话框
AlertDialog AlertDialog=builder.create();
alertDialog.show();
返回null;
}
@凌驾
已更改公共void onLocationChanged(位置arg0){
//TODO自动生成的方法存根
}
@凌驾
公共无效onProviderDisabled(字符串arg0){
//TODO自动生成的方法存根
}
@凌驾
已启用公共void onProviderEnabled(字符串arg0){
//TODO自动生成的方法存根
}
@凌驾
状态已更改的公共void(字符串arg0、整数arg1、捆绑包arg2){
//TODO自动生成的方法存根
}
私有位置getLastKnownLocation(){
LocationManager LocationManager=(LocationManager)getSystemService(LOCATION\u服务);
/*确认gps已打开*/
如果(!locationManager.isProviderEnabled(locationManager.GPS\U提供程序)){
buildAlertMessageNoGps();
}
标准=新标准();
标准.设定准确度(标准.准确度/精细度);
标准。setAltitudeRequired(false);
标准。需要设置(假);
条件。允许设置成本(false);
标准。设置功率要求(标准。功率高);
字符串提供程序=locationManager.getBestProvider(条件为true);
if(提供程序==null){
onProviderDisabled(空);
}
Location Location=locationManager.getLastKnownLocation(提供者);
locationManager.RequestLocationUpdate(locationManager.GPS_提供程序,300000,5000,此);
如果(位置!=null){
System.out.println(“已选择提供程序”+提供程序+”);
onLocationChanged(位置);
返回位置;
} 
返回null;
}
私有void buildAlertMessageNoGps(){
final AlertDialog.Builder=新建AlertDialog.Builder(此);
setMessage(“您的GPS似乎已禁用,是否要启用它?”)
.setCancelable(错误)
.setPositiveButton(“是”,新的DialogInterface.OnClickListener(){
public void onClick(@SuppressWarnings(“未使用”)最终对话框
EditText city_entry = (EditText) findViewById(R.id.city_entry);
EditText city_entry = (EditText) view.findViewById(R.id.city_entry); 
 System.err.println(city_entry.getText().toString());
 System.err.println(""+city_entry.getText().toString());
View builderView;
AlertDialog alert;

private void getFromCityState() {

    LayoutInflater inflater = LayoutInflater.from(this);
    //View view = inflater.inflate(R.layout.city_state_entry, null);
    builderView = inflater.inflate(R.layout.city_state_entry, null);
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    //builder.setView(view);
    builder.setView(builderView);

    //AlertDialog alertDialog = builder.create();

    alert = builder.create();
    alert.show();

} 

public void submitButtonOnClick(View view) {

    EditText city_entry = (EditText) builderView.findViewById(R.id.city_entry);
    Spinner state = (Spinner) builderView.findViewById(R.id.state_spinner); 

    cityState = city_entry.getText().toString() + ", " + state.getSelectedItem().toString();

    System.err.println(cityState);

    alert.dismiss();

    geocoder = new Geocoder(this);
    try {
        List<Address> addresses = geocoder.getFromLocationName(cityState, 1);
        /* the point of all of this is to set this GeoPoint value */
        searchFrom = new GeoPoint( (int) (addresses.get(0).getLatitude() * 1E6), (int) (addresses.get(0).getLongitude() * 1E6) );
        System.err.println("searchFrom: " + Integer.toString(searchFrom.getLatitudeE6()));
    } catch (IOException e) {
        e.printStackTrace();
    }

}