В моем приложении для Android у меня есть два действия:
1) MapsActivity
2) ДругоеДеятельность
MapsActivity имеет навигационный ящик, через который я открыл OtherActivity . Теперь я хочу вызвать метод (например, updatemap () ) из MapsActivity .
После долгих поисков в Google я нашел этот вопрос на stackoverflow
Как вызвать метод в основной деятельности из другой деятельности? но это не решает мою проблему.
ОБНОВЛЕНИЕ:
Вот код для OtherActivity:
public class OtherActivity extends AppCompatActivity {
@Override
protected void attachBaseContext(Context newBase) {.....}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
.... }
@Override
protected void onStart() {
super.onStart();
removeConnection(userID)
.... }
private void removeConnection(String currentUserId) {
...
// Here I want to call a function from MapsActivity i.e. disaplayLocation()
}
public static class ConnectedViewHolder extends
RecyclerView.ViewHolder{ ... }
}
Код для MapsActivity:
public class MapsActivity extends AppCompatActivity implements
OnMapReadyCallback,
GoogleApiClient.ConnectionCallbacks,
GoogleApiClient.OnConnectionFailedListener,
LocationListener {
@Override
protected void attachBaseContext(Context newBase) { ... }
@Override
protected void onCreate(Bundle savedInstanceState) { ... }
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull
String[] permissions, @NonNull int[] grantResults) { ... }
private void setUpLocation() { ... }
public void displayLocation() { ... } // This is the function i want to call
private void createLocationRequest() { ... }
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) { ... }
protected synchronized void buildGoogleApiClient() { ... }
private boolean checkPlayServices() { ... }
private void requestRuntimePermission() { ... }
private void startLocationUpdates() { ... }
@Override
public void onMapReady(GoogleMap googleMap) { ... }
@Override
public void onConnected(@Nullable Bundle bundle) { ... }
@Override
public void onConnectionSuspended(int i) { ... }
@Override
public void onConnectionFailed(@NonNull ConnectionResult
connectionResult) { ... }
@Override
public void onLocationChanged(Location location) { ... }
@Override
public boolean onCreateOptionsMenu(Menu menu) { ... }
@Override
public boolean onOptionsItemSelected(MenuItem item) { ... }
private void makeConnectionToGetLocation() { ... }
private void updateConnectedLatLng() { ... }
}
Я вставляю только структуру кода, потому что это 1000 строк кода, и вставка здесь бесполезна и становится более сложной для чтения.
Я пытался добавить ключевое слово static перед методом displayLocation, но оно выдает ошибку в переменных внутри функции, и сделать каждую переменную глобальной не представляется возможным.