SORU
26 Kasım 2011, CUMARTESİ


bitirdikten sonra devam onCreate()

onCreate yöntemin içinde bir aktiviteyi bitirmek istiyorum. finish(), onDestroy() hemen çağrılmaz aradığımda kodu finish() son akan tutar. onDestroy() onCreate() kapanış ayracı sonrasına kadar değil.

Developer.android.com/reference onCreate() açıklama başına.

Bitirmek diyebilirsin() bu durumda bu işlev içinde, () onDestroy hemen geri kalanı olmadan çağrılır ((), onStart, onResume(), onPause(), vb) faaliyet döngüsü yürütülüyor.

Ben sormak nedeni: veri kontrol Paketi onCreate(). geçirilen istiyorum Elbette onCreate geçti, ve ne denetim var ama hala teslim noktasında teslim edilmesi gerektiğini düşünüyorum.

Benim kod içeren sınıf Etkinliği B başlatan A,. Son iki "eğer dışında yan" etiketleri, if deyim finish yöntemin etkinliği yok etmeliydi çünkü adı olmamalı. finish() sonra etiket satırı yine de okuyun çünkü tümcesi ile bir ilgisi yok.

Benim Kod:

Bir Sınıf

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    // goToBButton: when pressed sends message to class B.    
    Button goToBButton = (Button)this.findViewById(R.id.go_to__b_btn);
    goToBButton.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick (View v) {      
            Log.i(TAG,"A Class: goToBButton, onClick");
            Intent i = new Intent(A.this, B.class);
            startActivityForResult(i,REQ_TO_B);
        }       
    });                
} // end onCreate

Benim Kod ClassB

    public class B extends Activity{

private static final String TAG = "tag";

@Override
   public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.layoutb);

  // set as true, should always print Tag: one line before first finish"
  if (true)  {

    Log.i(TAG,"B Class: one line before 1st finish");
    finish();
  }

  // shouldn't get here after first finish
  Log.i(TAG,"B Class: outside of if clause, before second finish");
  finish();
  // shouldn't get here after second finish
  Log.i(TAG,"B Class: outside of if clause, after finish");                  
   } // end onCreate


@Override
public void onStart () {
    super.onStart();
    Log.i(TAG,"B Class: onStart");
}

@Override
public void onRestart() {
    super.onRestart();
    Log.i(TAG,"B Class: onRestart");
}

@Override
public void onResume () {
    super.onResume();
    Log.i(TAG,"B Class: onResume");
}

@Override
public void onPause () {
    super.onPause();
    Log.i(TAG,"B Class: onPause");
}

@Override
public void onStop () {
    super.onStop();
    Log.i(TAG,"B Class: onStop");
}

@Override
public void onDestroy () {
    super.onDestroy();
    Log.i(TAG,"B Class: onDestroy");
}

 } // end B Class

İşte benim etiket sonuçları:

11-26 15:53:40.456: İNFO/tag(699): Sınıf: goToBButton, özelliği

11-26 15:53:40.636: İNFO/tag(699): Sınıf: onPause

11-26 15:53:40.865: İNFO/tag(699): B Sınıfı: bir satır 1 önce bitirmek

11-26 15:53:40.896: İNFO/tag(699): eğer tümcesi dışında B Sınıfı: ikinci bitir önce

11-26 15:53:40.917: İNFO/tag(699): eğer tümcesi dışında B Sınıfı: bitirdikten sonra

11-26 15:53:41.035: İNFO/tag(699): Sınıf: onResume

11-26 15:53:41.165: İNFO/tag(699): B Sınıfı: onDestroy

CEVAP
27 Kasım 2011, Pazar


Bitir çünkü tahminimce() dönmek için onCreate yöntemini neden olmaz. Sadece ekleyerek deneyebilirsiniz

finish();
return;

Veya başka bir kullanın

@Override
public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.layoutb);
  if(good data){
      //do stuff
  }else{
      finish();
  }
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BroadCity

    BroadCity

    10 ŞUBAT 2010
  • Kyler Briskey

    Kyler Briske

    20 ŞUBAT 2011
  • Lamborghini

    Lamborghini

    13 Aralık 2005