Счетчик Android заблокирован на первом элементе после получения сигнала GPS в моем приложенииAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Счетчик Android заблокирован на первом элементе после получения сигнала GPS в моем приложении

Сообщение Anonymous »

Итак, у меня есть следующее действие, которое должно выбрать самолет из списка и перейти к действию, которое использует некоторые данные GPS. После получения сигнала GPS и возврата к начальному действию для выбора другого самолета счетчик застревает на первом item.
Вот задание по выбору самолета

Код: Выделить всё

package com.example.clear2go;

Код: Выделить всё

import android.content.Intent;

Код: Выделить всё

import android.os.Bundle;

Код: Выделить всё

import android.util.Log;

Код: Выделить всё

import android.view.Menu;

Код: Выделить всё

import android.view.MenuItem;

Код: Выделить всё

import android.view.View;

Код: Выделить всё

import android.widget.ArrayAdapter;

Код: Выделить всё

import android.widget.Spinner;

Код: Выделить всё

import android.widget.Toast;

Код: Выделить всё

import androidx.annotation.NonNull;

Код: Выделить всё

import androidx.appcompat.app.AppCompatActivity;

Код: Выделить всё

import androidx.appcompat.widget.Toolbar;

Код: Выделить всё

import com.example.clear2go.databinding.ActivityProfileBinding;

Код: Выделить всё

import com.google.firebase.auth.FirebaseAuth;

Код: Выделить всё

import com.google.firebase.auth.FirebaseUser;

Код: Выделить всё

import com.google.firebase.database.DataSnapshot;

Код: Выделить всё

import com.google.firebase.database.DatabaseError;

Код: Выделить всё

import com.google.firebase.database.DatabaseReference;

Код: Выделить всё

import com.google.firebase.database.FirebaseDatabase;

Код: Выделить всё

import com.google.firebase.database.ValueEventListener;

Код: Выделить всё

import java.util.ArrayList;

Код: Выделить всё

import java.util.List;

Код: Выделить всё

public class ProfileActivity extends AppCompatActivity {

Код: Выделить всё

private FirebaseAuth firebaseAuth;

Код: Выделить всё

private DatabaseReference mDatabase;

Код: Выделить всё

private DatabaseReference avioaneData;

Код: Выделить всё

private static final String TAG="GOOGLE_SIGN_IN_TAG";

Код: Выделить всё

private ActivityProfileBinding binding;

Код: Выделить всё

String[] avioane ={"YR-5659","YR-PBJ","YR-5600","YR-5657"};

Код: Выделить всё

String selectedPlane;

Код: Выделить всё

@Override

Код: Выделить всё

protected void onCreate(Bundle savedInstanceState) {

Код: Выделить всё

super.onCreate(savedInstanceState);

Код: Выделить всё

binding  = ActivityProfileBinding.inflate(getLayoutInflater());

Код: Выделить всё

setContentView(binding.getRoot());

Код: Выделить всё

Toolbar toolbar = binding.toolbar;

Код: Выделить всё

setSupportActionBar(toolbar);

Код: Выделить всё

mDatabase= FirebaseDatabase.getInstance().getReference();

Код: Выделить всё

avioaneData = mDatabase.getDatabase().getReference().child("Utilizare/Aviatie/Aerodromuri/AR_AT Bucuresti/Flota/Avioane");

Код: Выделить всё

firebaseAuth = FirebaseAuth.getInstance();

Код: Выделить всё

checkUser();

Код: Выделить всё

Spinner selectPlane = binding.spinner;

Код: Выделить всё

avioaneData.addValueEventListener(new ValueEventListener() {

Код: Выделить всё

@Override

Код: Выделить всё

public void onDataChange(@NonNull DataSnapshot snapshot) {

Код: Выделить всё

Iterable airplanes = snapshot.getChildren();

Код: Выделить всё

            List updatedAvioane = new ArrayList();

for (DataSnapshot airplaneSnapshot : airplanes) {
String airplaneCode = airplaneSnapshot.getKey();
updatedAvioane.add(airplaneCode);
}

// Update the adapter with the new data
ArrayAdapter adapter = new ArrayAdapter(ProfileActivity.this, android.R.layout.simple_spinner_item, updatedAvioane);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
adapter.notifyDataSetChanged();
selectPlane.setAdapter(adapter);
}

@Override
public void onCancelled(@NonNull DatabaseError error) {
Log.d(TAG, "onCancelled: database error");
}
});
/*
selectPlane.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView parent, View view, int position, long id) {
selectedPlane = (String) parent.getItemAtPosition(position);
// Do something with the selectedName
}

@Override
public void onNothingSelected(AdapterView  parent) {

}
});

*/
selectedPlane= (String) selectPlane.getSelectedItem();

binding.button3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(ProfileActivity.this,"merge avionu..."+selectPlane.getSelectedItem(),Toast.LENGTH_SHORT).show();
Intent intent = new Intent(ProfileActivity.this, FlyActivity.class);
intent.putExtra("avion", (String) selectPlane.getSelectedItem());
startActivity(intent);
finish();
}
});

binding.button4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(ProfileActivity.this,ControlActivity.class));
}
});

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main,menu);
return true;
}

@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
if(item.getItemId()==R.id.idk1) {
firebaseAuth.signOut();
checkUser();
}

return true;
}

private void checkUser() {
FirebaseUser firebaseUser = firebaseAuth.getCurrentUser();
if(firebaseUser==null){
startActivity(new Intent(this,MainActivity.class));
finish();
}

}
а вот активность для полета:

Код: Выделить всё

package com.example.clear2go;

Код: Выделить всё

import android.Manifest;

Код: Выделить всё

import android.content.Context;

Код: Выделить всё

import android.content.Intent;

Код: Выделить всё

import android.content.pm.PackageManager;

Код: Выделить всё

import android.graphics.Color;

Код: Выделить всё

import android.hardware.Sensor;

Код: Выделить всё

import android.hardware.SensorManager;

Код: Выделить всё

import android.location.Location;

Код: Выделить всё

import android.location.LocationListener;

Код: Выделить всё

import android.location.LocationManager;

Код: Выделить всё

import android.os.Bundle;

Код: Выделить всё

import android.view.View;

Код: Выделить всё

import androidx.annotation.NonNull;

Код: Выделить всё

import androidx.appcompat.app.AppCompatActivity;

Код: Выделить всё

import androidx.core.app.ActivityCompat;

Код: Выделить всё

import com.example.clear2go.databinding.ActivityFlyBinding;

Код: Выделить всё

import com.google.android.gms.location.FusedLocationProviderClient;

Код: Выделить всё

import com.google.android.gms.location.LocationServices;

Код: Выделить всё

import com.google.firebase.auth.FirebaseAuth;

Код: Выделить всё

import com.google.firebase.auth.FirebaseUser;

Код: Выделить всё

import com.google.firebase.database.DataSnapshot;

Код: Выделить всё

import com.google.firebase.database.DatabaseError;

Код: Выделить всё

import com.google.firebase.database.DatabaseReference;

Код: Выделить всё

import com.google.firebase.database.FirebaseDatabase;

Код: Выделить всё

import com.google.firebase.database.ValueEventListener;

Код: Выделить всё

public class FlyActivity extends AppCompatActivity implements LocationListener {

Код: Выделить всё

private FirebaseAuth firebaseAuth;

Код: Выделить всё

private static final int REQUEST_LOCATION_CODE = 1;

Код: Выделить всё

private LocationManager locationManager;

Код: Выделить всё

private SensorManager sensorManager;

Код: Выделить всё

ActivityFlyBinding binding;

Код: Выделить всё

private FusedLocationProviderClient locationClient;

Код: Выделить всё

private DatabaseReference mDatabase;

Код: Выделить всё

private DatabaseReference avionData;

Код: Выделить всё

private DatabaseReference rq;

Код: Выделить всё

Sensor pressureSensor;

Код: Выделить всё

String avion;

Код: Выделить всё

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent start = getIntent();
avion = start.getStringExtra("avion");
binding = ActivityFlyBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());

locationClient = LocationServices.getFusedLocationProviderClient(this);
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
pressureSensor = sensorManager.getDefaultSensor(Sensor.TYPE_PRESSURE);

if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION},  REQUEST_LOCATION_CODE);
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
if (locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
locationManager.requestLocationUpdates(locationManager.GPS_PROVIDER, 0, 0, this);
}else {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 1);
}
}
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);

mDatabase = FirebaseDatabase.getInstance().getReference();
firebaseAuth = FirebaseAuth.getInstance();
FirebaseUser user = firebaseAuth.getCurrentUser();
rq = mDatabase.getDatabase().getReference().child("Requests");
avionData = mDatabase.getDatabase().getReference().child("Utilizare/Aviatie/Aerodromuri/AR_AT Bucuresti/Flota/Avioane/" + avion);

binding.engOn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
rq.child(avion).child("Pornire motor").setValue(false);
binding.engOn.setBackgroundColor(Color.parseColor("#FFA500"));
}
});
FirebaseDatabase.getInstance().getReference().child("Utilizare/Aviatie/Aerodromuri/AR_AT Bucuresti/Flota/Avioane/" + avion + "/Pornire motor").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if (snapshot.exists()) {
if (snapshot.getValue(boolean.class) == true) {
binding.engOn.setBackgroundColor(-16711936);
binding.engOn.setActivated(true);
binding.taxi.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
rq.child(avion).child("Rulaj").setValue(false);
binding.taxi.setBackgroundColor(Color.parseColor("#FFA500"));
}
});
FirebaseDatabase.getInstance().getReference().child("Utilizare/Aviatie/Aerodromuri/AR_AT Bucuresti/Flota/Avioane/" + avion + "/Rulaj").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if (snapshot.exists()) {
if (snapshot.getValue(boolean.class) == true) {
binding.taxi.setBackgroundColor(-16711936);
binding.taxi.setActivated(true);
binding.lineIn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
rq.child(avion).child("Intrare si aliniere").setValue(false);
binding.lineIn.setBackgroundColor(Color.parseColor("#FFA500"));
}
});
FirebaseDatabase.getInstance().getReference().child("Utilizare/Aviatie/Aerodromuri/AR_AT Bucuresti/Flota/Avioane/"  + avion + "/Intrare si aliniere").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if (snapshot.exists()) {
if (snapshot.getValue(boolean.class) == true) {
binding.lineIn.setBackgroundColor(-16711936);
binding.lineIn.setActivated(true);
binding.Takeoff.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
rq.child(avion).child("Plecare").setValue(false);
binding.Takeoff.setBackgroundColor(Color.parseColor("#FFA500"));
}
});
FirebaseDatabase.getInstance().getReference().child("Utilizare/Aviatie/Aerodromuri/AR_AT Bucuresti/Flota/Avioane/" + avion + "/Plecare").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if (snapshot.exists()) {
if (snapshot.getValue(boolean.class) == true) {
binding.Takeoff.setBackgroundColor(-16711936);
binding.Takeoff.setActivated(true);

binding.land.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//rq.child(avion).setValue("Aterizare "+avion);
rq.child(avion).child("Aterizare").setValue(false);
binding.land.setBackgroundColor(Color.parseColor("#FFA500"));
}
});
FirebaseDatabase.getInstance().getReference().child("Utilizare/Aviatie/Aerodromuri/AR_AT Bucuresti/Flota/Avioane/"  + avion + "/Aterizare").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if (snapshot.exists()) {
if (snapshot.getValue(boolean.class) == true) {
binding.land.setBackgroundColor(-16711936);
binding.land.setActivated(true);
} else {
binding.land.setActivated(false);
binding.land.setBackgroundColor(-65536);
}
}
}

@Override
public void onCancelled(@NonNull DatabaseError error) {

}
});
} else {
binding.Takeoff.setActivated(false);
binding.Takeoff.setBackgroundColor(-65536);

binding.land.setActivated(false);
binding.land.setBackgroundColor(-65536);
}
}
}

@Override
public void onCancelled(@NonNull DatabaseError error) {

}
});
} else {
binding.lineIn.setActivated(false);
binding.lineIn.setBackgroundColor(-65536);

binding.Takeoff.setActivated(false);
binding.Takeoff.setBackgroundColor(-65536);

binding.land.setActivated(false);
binding.land.setBackgroundColor(-65536);
}
}
}

@Override
public void onCancelled(@NonNull DatabaseError error) {

}
});
} else {
binding.taxi.setBackgroundColor(-65536);
binding.taxi.setActivated(false);

binding.lineIn.setActivated(false);
binding.lineIn.setBackgroundColor(-65536);

binding.Takeoff.setActivated(false);
binding.Takeoff.setBackgroundColor(-65536);

binding.land.setActivated(false);
binding.land.setBackgroundColor(-65536);
}
}
}

@Override
public void onCancelled(@NonNull DatabaseError error)  {

}
});
} else {
binding.engOn.setActivated(false);
binding.engOn.setBackgroundColor(-65536);

binding.taxi.setBackgroundColor(-65536);
binding.taxi.setActivated(false);

binding.lineIn.setActivated(false);
binding.lineIn.setBackgroundColor(-65536);

binding.Takeoff.setActivated(false);
binding.Takeoff.setBackgroundColor(-65536);

binding.land.setActivated(false);
binding.land.setBackgroundColor(-65536);

}
}
}

@Override
public void onCancelled(@NonNull DatabaseError error) {

}
});

binding.exit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(FlyActivity.this, ProfileActivity.class);
startActivity(intent);
finish();
}
});

}

@Override
public void onLocationChanged(@NonNull Location location) {
binding.alt.setText(String.valueOf((int)location.getAltitude()));
binding.speed.setText(String.valueOf((int)location.getSpeed()));
avionData.child("lat").setValue(location.getLatitude());
avionData.child("lng").setValue(location.getLongitude());
}
поэтому я попытался удалить onItemSelectedListener и Used.getItem Selected, но безрезультатно

Подробнее здесь: https://stackoverflow.com/questions/784 ... al-in-my-a
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»