Ich bin neu bei Android. Ich habe Hauptaktivität, von der ich verschiedene Klassen aufrufen muss, um verschiedene Funktionen auszuführen. Aber wenn ich zwei Klassen gleichzeitig anrufe, wird nur die letzte Absicht aufgerufen. Kann jemand vorschlagen, zwei oder mehr Klassen gleichzeitig in einer Aktivität anzurufen? DankeAndroid Call 2 oder mehr Klassen von Hauptaktivität
Unten ist mein Codebeispiel
Hauptaktivität
public class MainActivity extends AppCompatActivity {
public Api mApi;
Button data;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
data = (Button) findViewById(R.id.button2);
//calling sygic truck api and implementing sygic call back
mApi = Api.init(getApplicationContext(), "com.sygic.truck", "com.sygic.truck.SygicService", mApiCallback);
//connecting sygic app
mApi.connect();
data.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent1 = new Intent(getApplicationContext(), locationInfo.class);
Intent intent2 = new Intent(getApplicationContext(), routeInfo.class);
Intent[] list = new Intent[2];
list[0] = intent1;
list[1] = intent2;
startActivities(list);
}
});
}
}
locationInfo Klasse
public class locationInfo extends AppCompatActivity {
public Api mApi;
public TextView coordinates;
public String currentLocation = "";
public String longitude;
public String latitude;
public Button data;
public String altitude, speed;
public int speedLimit;
//calling gps class from sygic lib
GpsPosition gpsPos = new GpsPosition();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
coordinates = (TextView) findViewById(R.id.textView);
// sygicGetData();
try {
Log.v("debug", "Location is...1");
boolean satInfo = true;
int maxTime = 0;
gpsPos = ApiNavigation.getActualGpsPosition(satInfo, maxTime);
longitude = String.valueOf(gpsPos.getLongitude());
latitude = String.valueOf(gpsPos.getLatitude());
altitude = String.valueOf(gpsPos.getAltitude());
speed = String.valueOf(gpsPos.getSpeed());
speedLimit = ApiInfo.getCurrentSpeedLimit(maxTime);
Log.v("debug", "Location is...2");
Position pos = new Position();
pos.setPosition(gpsPos.getLongitude(), gpsPos.getLatitude());
currentLocation = ApiLocation.getLocationAddressInfo(pos, maxTime);
coordinates.setText("\n" + "Current Location:" + currentLocation + "\n" + "Longitude:" + longitude + "\n" + "Latitude:" + latitude +
"\n" + "Altitude:" + altitude + "\n" + "Current Speed:" + speed +
"\n" + "Speed Limit:" + speedLimit);
} catch (GpsException e) {
Log.e("GpsPosition", "Error code:" + e.getCode());
} catch (InvalidLocationException e) {
Log.e("Location", "Error code:" + e.getCode());
} catch (GeneralException e) {
e.printStackTrace();
}
}
}
routeInfo Klasse
public class routeInfo extends AppCompatActivity {
public String remainingDistance, remainingTime;
public String totalDistance, totalTime;
public Button data;
public TextView coordinates;
public RouteInfo routeInfo;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
coordinates = (TextView)findViewById(R.id.textView2);
// sygicGetData();
try {
boolean info = true;
int maxTime = 0;
routeInfo = ApiNavigation.getRouteInfo(info, maxTime);
totalDistance = String.valueOf(routeInfo.getTotalDistance());
remainingDistance = String.valueOf(routeInfo.getRemainingDistance());
totalTime = String.valueOf(routeInfo.getTotalTime());
remainingTime = String.valueOf(routeInfo.getRemainingTime());
coordinates.setText("\n" + "Total Travel Distance:" + totalDistance + "\n" + "Remaining Travel Distance:" + remainingDistance + "\n" + "Total Travel Time:" + totalTime + "\n" +
"Remaining Travel Time:" + remainingTime + "\n");
} catch (GpsException e) {
Log.e("GpsPosition", "Error code:" + e.getCode());
} catch (InvalidLocationException e) {
Log.e("Location", "Error code:" + e.getCode());
} catch (GeneralException e) {
e.printStackTrace();
}
}
}
Android Manifest
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.jackfruit.sygicdata4">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".getters.locationInfo"></activity>
<activity android:name=".getters.routeInfo"></activity>
</application>
</manifest>
Was passiert, wenn Sie nach dem Start der letzten Aktivität die Zurück-Taste drücken? Nach bestem Wissen und Gewissen, startActivities() stack nur verwendet werden, um ein synthetisches Konstrukt zurück, nicht Aktivitäten starten in seriellen Dieser Link weitere Informationen hat: [hier] (http://stackoverflow.com/questions/24295906/why-use-start-activities) –
Hallo Srinivas, beim Drücken der Taste ruft es die erste Absicht auf. Gibt es eine Art, wie ich beide zusammenrufe? –
Definieren Sie auch zwei Klassen gleichzeitig.Zu einem bestimmten Zeitpunkt kann sich nur eine Aktivität an der Spitze des Stapels befinden. startActivities startet nicht 2 Aktivitäten und lässt sie gleichzeitig laufen –