2016-03-22 18 views
0

Android cihazında yeni. Farklı işlevleri yerine getirmek için farklı sınıfları aramam gereken ana aktivitem var. Ama aynı anda iki sınıf dediğimde, sadece son niyet denir. Birisi bir etkinlikte aynı anda 2 veya daha fazla sınıf aramak için bir yol önerebilir. Teşekkür ederim Aşağıda Android, ana aktiviteye göre 2 veya daha çok sınıf çağrısı

Ana Etkinlik

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 sınıf

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(); 
     } 
    } 
} 

benim kod örneği

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 Bildirim

<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> 
+0

Son Etkinlik başlatıldıktan sonra geri düğmesine bastığınızda ne olur? Bilgimden geldiğince, startActivities() yalnızca numaralı serideki başlatma aktiviteleri için sentetik bir yığın oluşturmak için kullanılır. Bu bağlantıda daha fazla bilgi vardır: [burada] (http://stackoverflow.com/questions/24295906/Neden-kullanım-başlangıç-faaliyetleri) –

+0

Merhaba Srinivas, geri düğmesine basarak ilk amacı çağırır. İkisini de aramamın bir yolu var mı? –

+0

Aynı zamanda iki sınıf tanımlayın.Herhangi bir zaman noktasında yığının en üstünde sadece 1 aktivite olabilir. startActivities 2 etkinlik başlatmıyor ve aynı anda –

cevap

0

Tamam routeInfo sınıfı

startActivities() 

bir arka sentetik yığın adı verilen bir oluşturmak için kullanılır. Bir uygulama içinde

Eğer bir "backstack" denen bir şeyi inşa faaliyetlerinin herhangi bir

finish() 

yürütmesini olmadan başka 1 aktivitesinin hareket

. Geri düğmesine basıldığında geri yüklenen etkinlik yığını olduğu için arka yığını denir.

yapay bir backstack yaratmak istedik Eğer

-startActivities() 

olur ne bu yapay backstack içine geçen niyet faaliyeti ancak her şeyi eklemek görüyorsunuz. Eğer "Eğer çalıştırmak aradığınız şey kullanmak gerekir paralel görevlere 2 istiyorsanız, sadece onlar hakkında ayrı ayrı

startActivity() 

çağrı activit 1 çalıştırın ve sonra activity2 çalıştırmak istiyorsa

AsyncTask". Edebiyat here

+0

Async görevinin normalde tek bir kullanım için –

+0

linkini almak veya göndermek için kullanılır. Bir Async Task, UI iş parçacığını engellemediğiniz bir şeydir. Örneğin, belirttiğiniz gibi, ana iş parçacığı üzerinde yapılan bir ağın engelleme potansiyeli olduğu için ağ çağrıları, bu nedenle bir uyumsuzluk görevi kullanılarak yapılır. Android İşleyicileri ve Konu havuzu varyantlarını da kullanabilirsiniz. Ancak Async görevlerinde de çalışmam gereken diğerlerinin tümü URL'ler için –

+0

çalışmam için bir uyumsuzluk görevi örneği gönderebilir mi? –

İlgili konular