Android EditText getText崩溃
看起来很简单的练习,但不知怎么搞砸了我的程序。尝试检索用户在EditText字段中输入的字符串。当我点击提交按钮时,我崩溃了。再次感谢 以下是代码和LogCat信息: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;
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();
}
}