Bir parametre ile bir Faaliyet başlatma

Android geliştirme konusunda çok yeniyim.

Bir oyun hakkında bilgi göstermek için bir etkinlik oluşturmak ve başlatmak istiyorum. Bu bilgiyi göstermek için bir gameId'ye ihtiyacım var.

Bu oyun kimliğini aktiviteye nasıl aktarabilirim? Oyun kimliği kesinlikle gerekli, bu yüzden kimliği yoksa etkinliği oluşturmak veya başlatmak istemiyorum.

Sanki aktivitenin tek parametreli sadece bir kurucusu varmış gibi.

Bunu nasıl yapabilirim?

Teşekkürler.

Çözüm

Yeni Intent içine kimliğiniz olan bir int koyun.

Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
Bundle b = new Bundle();
b.putInt("key", 1); //Your id
intent.putExtras(b); //Put your id to your next Intent
startActivity(intent);
finish();

Ardından yeni Activity etkinliğinizdeki kimliği alın:

Bundle b = getIntent().getExtras();
int value = -1; // or other values
if(b != null)
    value = b.getInt("key");
Yorumlar (7)

Aktivitenizi çağırmak için kullandığınız Intent'e ekstra veri eklemeniz yeterlidir.

Arayan etkinliğinde:

Intent i = new Intent(this, TheNextActivity.class);
i.putExtra("id", id);
startActivity(i);

Çağırdığınız aktivitenin onCreate() işlevinin içinde:

Bundle b = getIntent().getExtras();
int id = b.getInt("id");

Düzenleme : Oops, Charlie Sheen daha hızlıydı.

Yorumlar (3)

Mevcut yanıtlar (startActivity()ye aktarılan Intent içindeki verileri aktarmak) bu sorunu çözmenin normal yolunu göstermektedir. Başka bir uygulama (örneğin, bir Tasker eklentisindeki düzenleme etkinliklerinden biri) tarafından başlatılacak bir Etkinlik oluşturduğunuz ve bu nedenle Activityyi başlatan Intenti kontrol etmediğiniz garip durumlarda kullanılabilecek başka bir çözüm daha vardır.

Parametre içeren bir kurucuya sahip bir temel sınıf Activity oluşturabilir, ardından temel sınıf kurucusunu bir değerle çağıran varsayılan bir kurucuya sahip bir türetilmiş sınıf oluşturabilirsiniz:

class BaseActivity extends Activity
{
    public BaseActivity(String param)
    {
        // Do something with param
    }
}

class DerivedActivity extends BaseActivity
{
    public DerivedActivity()
    {
        super("parameter");
    }
}

Temel sınıf kurucusuna aktarılacak parametreyi oluşturmanız gerekiyorsa, sabit kodlanmış değeri aktarılacak doğru değeri döndüren bir işlev çağrısıyla değiştirmeniz yeterlidir.

Yorumlar (0)