Мне нужно найти местоположение пользователя на разных экранах моего приложения. Я написал код, чтобы получить местоположение в одном из действий экрана, однако теперь я хочу получить местоположение в другой активности экрана. Есть ли что-нибудь, что я могу сделать, чтобы избежать повторного написания того же кода?Как избежать повторения кода в Android через классы?
// variables
// These variables will be repeated
LocationProvider locationProvider;
double latitude;
double longitude;
private String userPostcode;
// ===============
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// This code will be repeated
locationProvider = new LocationProvider(getActivity());
latitude = locationProvider.getLatitude();
longitude = locationProvider.getLongitude();
if (isNetworkAvailable(getContext())) {
getPostcode();
} else {
Toast.makeText(getActivity(), "Internet or GPS is not available. To get the best location one or both of these must be on",
Toast.LENGTH_LONG).show();
}
// =============
return inflater.inflate(R.layout.fragment_location, container, false);
}
// These two methods will be repeated
private void getPostcode(){
Geocoder geoCoder = new Geocoder(getActivity().getApplicationContext(), Locale.getDefault());
List<Address> address = null;
if (geoCoder != null) {
try {
address = geoCoder.getFromLocation(latitude, longitude, 1);
} catch (IOException e1) {
e1.printStackTrace();
}
if (address.size() > 0) {
userPostcode = address.get(0).getPostalCode();
}
}
}
private boolean isNetworkAvailable(final Context context) {
final ConnectivityManager connectivityManager = ((ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE));
return connectivityManager.getActiveNetworkInfo() != null && connectivityManager.getActiveNetworkInfo().isConnected();
}
// ====================
Если его можно избежать повторения, пожалуйста, кто-нибудь может показать мне/показать мне, как это можно сделать, пожалуйста. Я новичок в андроиде и, возможно, пропустил что-то глупое.
Возможно ли вернуть более одного результата, а затем принять решение позже при вызове метода, который будет использоваться. например, я хочу вернуть lat и long также – SumOne
Также, как я могу назвать это в своем фрагменте? – SumOne
см. Отредактированный пост. для фрагмента вам нужно использовать 'getActivity()', и для вызова в действии вы можете просто передать 'this' в качестве контекста. –