Android Programlama Ders 33: RequestCode ve ResultCode - Technopat
Sonuç bulunamadı
Bütün Sonuçları Göster
Teknoloji tutkunu Technopatların ortak adresi: Technopat.net
  • Haber
  • Yapay Zeka
  • Tavsiyeler
  • Oyun
  • Video
  • Teknoloji
    • Mobil
    • Nasıl Yapılır
    • Yazılım
    • Elektronik Alışveriş Fırsatları
    • Pratik
    • Ev Teknolojileri
    • Makale
    • Güvenlik
    • Ekonomi
    • İnternet
    • Giyilebilir Teknoloji
    • Sağlık
    • Yazıcı
    • Sosyal Medya
    • Otomobil
      • Elektrikli Otomobil
  • CES 2026
  • Sosyal
Teknoloji tutkunu Technopatların ortak adresi: Technopat.net
  • Haber
  • Yapay Zeka
  • Tavsiyeler
  • Oyun
  • Video
  • Teknoloji
    • Mobil
    • Nasıl Yapılır
    • Yazılım
    • Elektronik Alışveriş Fırsatları
    • Pratik
    • Ev Teknolojileri
    • Makale
    • Güvenlik
    • Ekonomi
    • İnternet
    • Giyilebilir Teknoloji
    • Sağlık
    • Yazıcı
    • Sosyal Medya
    • Otomobil
      • Elektrikli Otomobil
  • CES 2026
  • Sosyal
Sonuç bulunamadı
Bütün Sonuçları Göster
Teknoloji tutkunu Technopatların ortak adresi: Technopat.net

Anasayfa - Makale - Pratik - Android Programlama Ders 33: RequestCode ve ResultCode

Android Programlama Ders 33: RequestCode ve ResultCode

13 Nisan 2014 - 13:00
- Mobil, Pratik

Android Programlama Ders 33’te geçen derste gördüğümüz requestCode ve resultCode parametrelerini projeyi kullanarak daha ayrıntılı inceleyeceğiz.

Geçen derslerimizde etkileşimi kullanarak sonucu almayı öğrendik. Bu olayı daha ayrıntılı araştıralım. Yeni proje oluşturacağız. Projede iki etkileşim (Activity) bize sonucu gönderecek. Etkileşimden gelen sonuç onActivityResult metodunda işleniyor. requestCode parametresi farklı etkileşimlerden gelen sonuçları ayırmak için kullanılıyor. Ve resultCode parametresi çağırmanın başarılı olup olmadığını belirtmek için kullanılıyor. Yeni bir proje açalım:

  • Project name: P0033_ActivityResult
  • Build Target: Android 4.2
  • Application name: ActivityResult
  • Package name: tr.example.activityresult
  • Create Activity: MainActivity

Main.xml dosyayı açalım ve aşağıdaki kodu kopyalayalım:

<?xml version="1.0" encoding="utf-8"?>
 <LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:orientation="vertical">
 <TextView
  android:id="@+id/tvText"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:layout_marginTop="20dp"
  android:gravity="center_horizontal"
  android:text="Hello World"
  android:textSize="20sp">
 </TextView>
 <LinearLayout
  android:id="@+id/linearLayout1"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:layout_margin="20dp"
  android:orientation="horizontal">
 <Button
  android:id="@+id/btnColor"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:layout_marginRight="5dp"
  android:layout_weight="1"
  android:text="Color">
 </Button>
 <Button
  android:id="@+id/btnAlign"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:layout_marginLeft="5dp"
  android:layout_weight="1"
  android:text="Alignment">
 </Button>
 </LinearLayout>
 </LinearLayout>

Ekranda bir tane TextView (Hello World metni içerecek) olacak. İlk buton rengi seçmek ve ikincisi metni dizmek için. Butona basıldığı zaman seçim yapmak için etkileşimi (Activity) çağıracak. MainActivity.java’yı oluşturalım:

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity implements OnClickListener {

  TextView tvText;
  Button btnColor;
  Button btnAlign;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        tvText = (TextView) findViewById(R.id.tvText);

        btnColor = (Button) findViewById(R.id.btnColor);
        btnAlign = (Button) findViewById(R.id.btnAlign);

        btnColor.setOnClickListener(this);
        btnAlign.setOnClickListener(this);

    }

  @Override
  public void onClick(View v) {
    // TODO Auto-generated method stub

  }
}

Ekranda bulunan nesneleri belirttik ve butonlara işletici bağladık. Boş kalan onClick metodunu biraz sonra dolduracağız. İki etkileşimi oluşturalım. İlk etkileşim (ColorActivity) rengi değiştirecek. ColorActivity için layout dosyayı oluşturalım. İsmi color.xml olsun:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="horizontal">
<Button
 android:id="@+id/btnRed"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:layout_margin="5dp"
 android:layout_weight="1"
 android:text="Red">
</Button>
<Button
 android:id="@+id/btnGreen"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:layout_margin="5dp"
 android:layout_weight="1"
 android:text="Green">
</Button>
<Button
 android:id="@+id/btnBlue"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:layout_margin="5dp"
 android:layout_weight="1"
 android:text="Blue">
</Button>
</LinearLayout>

ColorActivity.java oluşturalım:

import android.app.Activity;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class ColorActivity extends Activity implements OnClickListener {

  Button btnRed;
  Button btnGreen;
  Button btnBlue;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.color);

    btnRed = (Button) findViewById(R.id.btnRed);
    btnGreen = (Button) findViewById(R.id.btnGreen);
    btnBlue = (Button) findViewById(R.id.btnBlue);

    btnRed.setOnClickListener(this);
    btnGreen.setOnClickListener(this);
    btnBlue.setOnClickListener(this);
  }

  @Override
  public void onClick(View v) {
    Intent intent = new Intent();
    switch (v.getId()) {
    case R.id.btnRed:
      intent.putExtra("color", Color.RED);
      break;
    case R.id.btnGreen:
      intent.putExtra("color", Color.GREEN);
      break;
    case R.id.btnBlue:
      intent.putExtra("color", Color.BLUE);
      break;
    }
    setResult(RESULT_OK, intent);
    finish();
  }
}

Ekrandaki bulunan bileşenleri belirtiyoruz. Butonlara işletici (this) bağlıyoruz. OnClick metodunda Intent’i oluşturuyoruz ve v.getID () metodu kullanarak basılan butonu buluyoruz.  Intent’e “color”- ismi ve renginin değeri (Color.Red, Color.Green,Color.Blue) yerleştiriyoruz. setResult metodu kullanarak statüsü RESULT_OK ve sonuç olarak intent nesneyi kullanacağımızı belirtiyoruz. Etkileşimi kapatıyoruz (finish ()). Renkleri kullanmak için sistemde bulunan değerleri kullanacağız. Aynı şekilde ikinci etkileşimi oluşturuyoruz. AlignActivity için layout dosyayı oluşturalım. İsmi align.xml olsun:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="horizontal">
<Button
 android:id="@+id/btnLeft"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:layout_margin="5dp"
 android:layout_weight="1"
 android:text="Left">
</Button>
<Button
 android:id="@+id/btnCenter"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:layout_margin="5dp"
 android:layout_weight="1"
 android:text="Center">
</Button>
<Button
 android:id="@+id/btnRight"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:layout_margin="5dp"
 android:layout_weight="1"
 android:text="Right">
</Button>
</LinearLayout>

AlignActivity.java oluşturalım:

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class AlignActivity extends Activity implements OnClickListener {

  Button btnLeft;
  Button btnCenter;
  Button btnRight;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.align);

    btnLeft = (Button) findViewById(R.id.btnLeft);
    btnCenter = (Button) findViewById(R.id.btnCenter);
    btnRight = (Button) findViewById(R.id.btnRight);

    btnLeft.setOnClickListener(this);
    btnCenter.setOnClickListener(this);
    btnRight.setOnClickListener(this);
  }

  @Override
  public void onClick(View v) {
    Intent intent = new Intent();
    switch (v.getId()) {
    case R.id.btnLeft:
      intent.putExtra("alignment", Gravity.LEFT);
      break;
    case R.id.btnCenter:
      intent.putExtra("alignment", Gravity.CENTER);
      break;
    case R.id.btnRight:
      intent.putExtra("alignment", Gravity.RIGHT);
      break;
    }
    setResult(RESULT_OK, intent);
    finish();
  }
}

Bu kod ColorActivity gibi, tek farkı burada rengi değil metnin pozisyonunu değiştiriyoruz. İki etkileşimi de Manifest dosyasında kaydetmeyi unutmuyoruz. Şimdi MainActivity.java dosyasını bitirebiliriz. requestCode olarak iki değişkeni kullanacağız:

final int REQUEST_CODE_COLOR = 1;
final int REQUEST_CODE_ALIGN = 2;

OnClick metodu dolduralım:

@Override
  public void onClick(View v) {
    Intent intent;
    switch (v.getId()) {
    case R.id.btnColor:
      intent = new Intent(this, ColorActivity.class);
      startActivityForResult(intent, REQUEST_CODE_COLOR);
      break;
    case R.id.btnAlign:
      intent = new Intent(this, AlignActivity.class);
      startActivityForResult(intent, REQUEST_CODE_ALIGN);
      break;
    }
  }

OnClick metodunda basılan butonu buluyoruz ve sonucu almak için Intent’i gönderiyoruz. startActivityForResult metodunda iki çağrı arasında farkı çağrılan klastan (ColorActivity veya AlignActivity) ve requestCode parametrelerden oluşuyor. ColorActivity etkileşimi çağırdığımız zaman REQUEST_CODE_COLOR ve AlignActivity etkileşimde REQUEST_CODE_ALIGN kullanıyoruz. Bu değişkenleri kullanarak onActivityResult metoduna gelen sonucun hangi etkileşimden geldiğini bulabiliriz. MainActivity.java dosyasında onActivityResult metodu oluşturalım:

@Override
  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // requestCode ve resultCode loga kaydedelim
    Log.d("myLogs", "requestCode = " + requestCode + ", resultCode = " + resultCode);
    //OK geldigi zaman
    if (resultCode == RESULT_OK) {
      switch (requestCode) {
      case REQUEST_CODE_COLOR:
        int color = data.getIntExtra("color", Color.WHITE);
        tvText.setTextColor(color);
        break;
      case REQUEST_CODE_ALIGN:
        int align = data.getIntExtra("alignment", Gravity.LEFT);
        tvText.setGravity(align);
        break;
      }
    // OK gelmedigi zaman
    } else {
      Toast.makeText(this, "Wrong result", Toast.LENGTH_SHORT).show();
    }
  }

Uygulamanın çalışmasını daha iyi anlamak için bildirimi (Log.d) kullanacağız. Bildirime requestCode ve resultCode parametrelerinin değerini yazdıracağız. ColorActivity ve AlignActivity etkileşimde setResult metodunda RESULT_OK statüsü yerleştiriyorduk. Bu demektir ki onActivityResult metodunda RESULT_OK çağrısının başarılı olup olmadığını ifade edecek. Çağrı başarılı olduğu zaman (resultCode = RESULT_OK) requestCode parametresine bakıyoruz. requestCode REQUEST_CODE_COLOR’a eşit olduğu zaman etkileşime sonucu gönderdiğini ifade ediyor. Intent’i  (data) kullanarak “color” isimli nesneyi alıyoruz ve değeri TextView’e yerleştiriyoruz. Color.WHITE getInExtra metodunda varsayılan parametre olarak kullanılıyor. Yani eğer Intent  “color” ismi nesneyi bulamıyorsa beyaz (WHITE) rengi kullanılacak. Aynı olay REQUEST_CODE_ALIGN için de geçerlidir. Eğer resultCode RESULT_OK’ye eşit değilse demek ki hata oluştu. Böyle bir olay oluştuğu zaman ekrana “Wrong result” mesajı göndereceğiz. Ekranda seçim yapmadan geri (Back) butonuna bastığı zaman böyle bir olay karşımıza çıkabilir. Uygulamayı kaydedelim ve çalıştıralım: hello world Color butonuna basıyoruz: color Mesela kırmızı (Red) rengi seçelim: red Bildirime bakıyoruz: log requestCode = 1, resultCode = -1 onActivityResult metodunda gelen requestCode bire eşit. Çünkü etkileşimi çağırmak için REQUEST_CODE_COLOR kullandık. resultCode = -1 sistemin  RESULT_OK değeri. Rengi seçtiğimiz zaman cevap olarak statüsü eşit RESULT_OK geldi. Alignment butonuna basıyoruz ve Right seçeneği seçiyoruz: right Bildirime bakıyoruz: requestCode = 2, resultCode = -1 onActivityResult metodunda gelen requestCode eşit iki. Çünkü etkileşimi çağırmak için REQUEST_CODE_ALIGN kullandık. resultCode = -1, yani RESULT_OK. Color butonuna basıyoruz ve geri (Back) butonuna basıyoruz: wrong result Hata olduğunu mesajdan görüyoruz. Bildirime bakalım: requestCode = 1, resultCode = 0   requestCode = 1 – doğru “Color” butonuna bastık (REQUEST_CODE_COLOR) resultCode = 0,  RESULT_CANCELED, değeri demek ki çağrı başarısızlıkla sonuçlandı. MainActivity.java dosyanın kodu:

import android.app.Activity;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener {

  final int REQUEST_CODE_COLOR = 1;
  final int REQUEST_CODE_ALIGN = 2;

  TextView tvText;
  Button btnColor;
  Button btnAlign;

  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    tvText = (TextView) findViewById(R.id.tvText);

    btnColor = (Button) findViewById(R.id.btnColor);
    btnAlign = (Button) findViewById(R.id.btnAlign);

    btnColor.setOnClickListener(this);
    btnAlign.setOnClickListener(this);
  }

  @Override
  public void onClick(View v) {
    Intent intent;
    switch (v.getId()) {
    case R.id.btnColor:
      intent = new Intent(this, ColorActivity.class);
      startActivityForResult(intent, REQUEST_CODE_COLOR);
      break;
    case R.id.btnAlign:
      intent = new Intent(this, AlignActivity.class);
      startActivityForResult(intent, REQUEST_CODE_ALIGN);
      break;
    }
  }

  @Override
  protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    Log.d("myLogs", "requestCode = " + requestCode + ", resultCode = " + resultCode);

    if (resultCode == RESULT_OK) {
      switch (requestCode) {
      case REQUEST_CODE_COLOR:
        int color = data.getIntExtra("color", Color.WHITE);
        tvText.setTextColor(color);
        break;
      case REQUEST_CODE_ALIGN:
        int align = data.getIntExtra("alignment", Gravity.LEFT);
        tvText.setGravity(align);
        break;
      }

    } else {
      Toast.makeText(this, "Wrong result", Toast.LENGTH_SHORT).show();
    }
  }
}

Ders Sonu Notları:

requestCode – çağrısının ID’si olarak sayabiliriz. startActivityForResult’a belirleniyor ve onActivityResult’a kontrol ediyor. Amacı hangi çağırına cevap geldiğini bilmek. resultCode – çağrının statüsü. setResult metodunda oluşuyor ve onActivityResult’a kontrol ediyor. Amacı çağrının başarılı olup olmadığını belirtmek. Gelecek derslerimizde URI nedir, onu öğreneceğiz.

Etiketler: align.xmlAndroidAndroid programlamadersFinishgetIDonActivityResultproğramprogramlamarequestCodeResult_OKresultCodesetResultteknolojiURIuygulamaWrong resultyeni
PaylaşPaylaşTweetYollaPaylaş
Victor Cuiumju

Victor Cuiumju

Yorum Yap Yanıtı iptal et

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

RSS Technopat Sosyal

  • RTX 5050'de RDR 2'de DLSS 4.5 aktif etme nereden yapılır?
  • TL Çeviri Eklentisi – SteamDB & SIH Uyumlu
  • Apple EarPods mikrofonu PC'de cızırtı sesi veriyor
  • 2000 TL modem önerisi
  • 3000 TL'ye fare önerisi
  • MSI A320M-A Pro anakart Dual Channel RAM çalıştırmıyor
  • Kendime uygun çevre bulamıyorum
  • ELEGOO Centauri Carbon 3D yazıcı vs Flashforge Adventurer 5M Pro 3D yazıcı
  • 900 TL oyuncu faresi önerisi
  • iPhone 15 pil sağlığı 3 ayda %96'ya düştü

Technopat Video

Şu an oynayan

iPhone 17 Pro’da 4 saat ProRes kayıt! Kioxia Exceria Plus G2 Portable SSD incelemesi

Kioxia Exceria Plus G2 Portable SSD incelemesi

iPhone 17 Pro’da 4 saat ProRes kayıt! Kioxia Exceria Plus G2 Portable SSD incelemesi

Haber
Xbox ve PC için e-Spor odaklı kontrolcü: Razer Wolverine V3 Pro incelemesi!

Xbox ve PC için e-Spor odaklı kontrolcü: Razer Wolverine V3 Pro incelemesi!

Haber
Mantar RAM’den 25 Gbps ev internetine: Yeni yılın ilk T Raporu yayında!

Mantar RAM’den 25 Gbps ev internetine: Yeni yılın ilk T Raporu yayında!

Haber

Teknoloji tutkunu Technopatların ortak adresi: Technopat.net!

Güncel teknoloji, internet, donanım, yazılım, oyun ve daha fazlası haber, makale ve videolar ile Technopat’ta sizlerle.

01010100 01100101 01100011 01101000 01101110 01101111 01110000 01100001 01110100

Kategoriler

  • Yapay Zeka
  • Ev Teknolojileri
  • Makale
  • Video

Sosyal Medya

Bağlantılar

  • Hakkında
  • Haber
  • Video
  • Sosyal
  • Çerez Politikası
© 2011-2025 Technopat. Tüm Hakları Saklıdır.

Hosting :

Çerez Onayı
Web sitemizi ziyaret ettiğinizde, kullanıcı deneyiminizi daha iyi hale getirmek, hizmetlerimizi size daha etkin bir şekilde sunabilmek için çerezler (cookies) ve benzeri araçlar kullanıyoruz. Çerezler, internet sitesinin düzgün çalışmasını sağlamak, içeriği kişiselleştirmek, sosyal medya özellikleri sağlamak ve trafik analizi yapmak için kullanılan küçük metin dosyalarıdır. Çerezleri nasıl kullandığımız ve kişisel verilerinizi nasıl işlediğimiz hakkında daha fazla bilgi almak için çerez politikamızı ve kişisel veri politikamızı inceleyebilirsiniz.
Fonksiyonel Her zaman aktif
Teknik depolama veya erişim, sadece kullanıcının açıkça talep ettiği belirli bir hizmetin kullanılmasını sağlama amacıyla veya iletişimin elektronik iletişim ağı üzerinden iletilmesinin tek amacıyla yasal olarak kesinlikle gereklidir.
Tercihler
Teknik depolama veya erişim, abone veya kullanıcı tarafından istenmeyen tercihlerin depolanması yasal amacıyla gereklidir.
İstatistikler
Sadece istatistiksel amaçlarla kullanılan teknik depolama veya erişim. The technical storage or access that is used exclusively for anonymous statistical purposes. Without a subpoena, voluntary compliance on the part of your Internet Service Provider, or additional records from a third party, information stored or retrieved for this purpose alone cannot usually be used to identify you.
Pazarlama
Teknik depolama veya erişim, reklam gönderimi için kullanıcı profilleri oluşturmak veya kullanıcıyı bir web sitesinde veya birden fazla web sitesinde benzer pazarlama amaçları için takip etmek amacıyla gereklidir.
  • Seçenekleri yönet
  • Hizmetleri yönetin
  • {vendor_count} satıcılarını yönetin
  • Bu amaçlar hakkında daha fazla bilgi edinin
Tercihleri yönet
  • {title}
  • {title}
  • {title}
Sonuç bulunamadı
Bütün Sonuçları Göster
  • Giriş
  • Teknoloji Haberleri
  • Sosyal
  • Nasıl Yapılır
  • Yapay Zeka
  • Video
  • Tavsiyeler
  • İncelemeler
    • Video İncelemeler
  • Güvenlik
  • Oyun
  • Makale
    • Pratik
    • Yazar Köşeleri
  • CES 2026

© 2025 Technopat
Sorularınız için Technopat Sosyal