ジオコーダ逆ジオコーダを作成しています。
座標は、逆ジオコーディングでさらに使用するテキストビューで生成されます。
問題は、変数にtextviewの内容を保存しようとすると、アプリケーションが突然動作しなくなることです。 LATITUDE = Double.parseDouble(t.getText().toString());
LATITUDE
は、変数であり、t
は、座標が生成されるtextView
です。
textViewのdouble値を変数に保存する
さらにdouble
の値をtextView
から変数に保存して、さらに使用できるようにする方法はありますか。
そうでない場合は、この問題を解決できる可能性があります。あなたは次の行でのTextViewに協調の新しい追加されている
public class MainActivity extends Activity {
private Button b;
public TextView t;
public TextView u;
public TextView add;
private LocationManager locationManager;
private LocationListener listener;
public Button b2;
private EditText e;
double LATITUDE;
double LONGITUDE;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
t = (TextView) findViewById(R.id.textView);
u = (TextView) findViewById(R.id.textView3);
add = (TextView) findViewById(R.id.textView4);
b = (Button) findViewById(R.id.button);
b2 = (Button) findViewById(R.id.button2);
e = (EditText) findViewById(R.id.editText);
b2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String number = e.getText().toString();
String loc = t.getText().toString();
String loc1 = u.getText().toString();
String loc2 = add.getText().toString();
Intent sendIntent = new Intent(Intent.ACTION_VIEW);
sendIntent.setData(Uri.parse("sms:"+number));
sendIntent.putExtra("sms_body",loc+loc1+loc2);
try {
startActivity(sendIntent);
finish();
Log.i("Finished sending SMS...", "");
}
catch (android.content.ActivityNotFoundException ex) {
Toast.makeText(MainActivity.this,
"SMS failed, please try again later.", Toast.LENGTH_SHORT).show();
}
}
});
locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
listener = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
t.append("\n " + location.getLatitude());
u.append("\n " + location.getLongitude());
}
@Override
public void onStatusChanged(String s, int i, Bundle bundle) {
}
@Override
public void onProviderEnabled(String s) {
}
@Override
public void onProviderDisabled(String s) {
Intent i = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(i);
}
};
configure_button();
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode){
case 10:
configure_button();
break;
default:
break;
}
}
void configure_button(){
// first check for permissions
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
requestPermissions(new String[]{Manifest.permission.ACCESS_COARSE_LOCATION,Manifest.permission.ACCESS_FINE_LOCATION,Manifest.permission.INTERNET}
,10);
}
return;
}
// this code won't execute IF permissions are not allowed, because in the line above there is return statement.
b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//noinspection MissingPermission
locationManager.requestLocationUpdates("gps",15000,0, listener);
}
});
}
public void phone(View view) {
Intent i = new Intent(this,Main2Activity.class);
startActivity(i);
}
public void address(View view) {
LATITUDE = Double.parseDouble(t.getText().toString());
LONGITUDE = Double.parseDouble(u.getText().toString());
Geocoder geocoder = new Geocoder(this, Locale.ENGLISH);
String result;
try {
List<Address> addressList = geocoder.getFromLocation(LATITUDE, LONGITUDE, 1);
if (addressList != null && addressList.size() > 0) {
Address address = addressList.get(0);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < address.getMaxAddressLineIndex(); i++) {
sb.append(address.getAddressLine(i));
}
sb.append("\n" + address.getLocality());
sb.append("\n" + address.getPostalCode());
sb.append("\n" + address.getCountryName());
result = sb.toString();
add.append(result);
}
}
catch (IOException e) {
}
}
}
このケースは、使用されます。 TextViewの中に、私は完全にあなたが私はすでに書かれていることを実現するために私を導いpart.Which文字列に強調されるまで忘れてしまった: – Shourya
ねえThanksss.Iは本当に愚かなmistake.Iは、テキスト「緯度」を書いたit.Iを作ってしまいましたテキストビューの何か.... Thankss – Shourya
あなたが答えを見つけたら、それを正解とマークすることを忘れないでください。 – Bashima