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
    • 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
  • Sosyal
Teknoloji tutkunu Technopatların ortak adresi: Technopat.net
  • Haber
  • Yapay Zeka
  • Tavsiyeler
  • Oyun
  • Video
  • Teknoloji
    • Mobil
    • 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
  • Sosyal
Sonuç bulunamadı
Bütün Sonuçları Göster
Teknoloji tutkunu Technopatların ortak adresi: Technopat.net

Anasayfa - Mobil - Android Programlama Ders 12: Menü, Gruplar, Sıralama, MenuInflater ve Xml Menu

Android Programlama Ders 12: Menü, Gruplar, Sıralama, MenuInflater ve Xml Menu

21 Haziran 2013 - 18:50
- Mobil, Teknoloji

Android Programlama Ders 12’de Menü, gruplar, sıralama, MenuInflater ve Xml menü seçeneklerini oluşturmayı öğrenerek devam ediyoruz…

Android programlama öğrenmeye devam ediyoruz. Bu derste Id’leri kullanarak menü seçenekleri oluşturmayı öğreneceğiz. Sonra seçenekleri gruplanması ve sınıflandırmayı öğrenerek devam edeceğiz.

Geçen derste add(CharSequence title) metodu kullanarak basit bir menü oluşturmayı öğrendik. Add metodu giriş değişkenleri  olarak metinleri kullanıyor. Add metodunun farklı kullanım imkanları da vardır. add(int groupId, int itemId, int order, CharSequence title) bu biçimde add metodu dört giriş parametresi kullanıyor :

–          groupId – grubun belirleyici (ID’si), menü bu grubun parçasıdır

–          itemId  –  menü seçeneklerinin ID’sini belirliyor

–          order – menü seçeneklerinin gösterme sırasını belirleniyor

–          title – metinleri gösteriyor

Bu parametreleri kullanmak için yeni bir proje oluşturalım. Uygulamanın ekranındaki TextView ve CheckBox nesnelerini kullanacağız.

–          TextView:  Bunu kullanarak, menünün istediğimiz seçeneği yansıtmasını sağlayacağız.

–          CheckBox: Bunu kullanarak basit veya gelişmiş menü seçenekleri arasından seçim yapacağız. Bu özelliği menü grupları kullanarak gerçekleşeceğiz.

Yeni bir proje oluşturalım:

  • Project name: P0012-MenuAdvn
  • Build Target:Android 4.2
  • Application name: MenuAdvn
  • Package name: tr.androidApp.MenuAdvn
  • Create Activity: MainActivity

Main.xml dosyasını açalım, TextView için ID’sini belirliyoruz ve CheckBox’u yaratıyoruz.

Aşağıdaki gibi bir kod olacak.

<?xml version=”1.0″ encoding=”utf-8″?>
<LinearLayout
xmlns:android=”http://schemas.android.com/apk/res/android”
android:orientation=”vertical”
android:layout_width=”fill_parent”
android:layout_height=”fill_parent”>
<CheckBox
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:id=”@+id/chbExtMenu”
android:text=”gelismis menu”>
</CheckBox>
<TextView
android:layout_width=”fill_parent”
android:layout_height=”wrap_content”
android:id=”@+id/textView”>
</TextView>
</LinearLayout>

MainActivity.java’yı açalım ve MainActivity klası aşağıdaki kodla dolduralım.

public class MainActivity extends Activity {

// ekranin nesneleri
TextView tv;
CheckBox chb;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// nesneleri buluyoruz
tv = (TextView) findViewById(R.id.textView);
chb = (CheckBox) findViewById(R.id.chbExtMenu);

}

// menu olusturuyoruz
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
// menunun secenekleri ekliyoruz
menu.add(0, 1, 0, “add”);
menu.add(0, 2, 0, “edit”);
menu.add(0, 3, 3, “delete”);
menu.add(1, 4, 1, “copy”);
menu.add(1, 5, 2, “paste”);
menu.add(1, 6, 4, “exit”);

return super.onCreateOptionsMenu(menu);
}

// menunun yenilmesi
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
// eger CheckBox isaretlidir,ID grubu = 1’in menu secenekleri gorebiliriz

menu.setGroupVisible(1, chb.isChecked());
return super.onPrepareOptionsMenu(menu);
}

// basilmasinin islenmesi
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
StringBuilder sb = new StringBuilder();

//TextView bize menunun basılmıs secenegı bilgi verecektir
sb.append(“Item Menu”);
sb.append(“\r\n groupId: ” + String.valueOf(item.getGroupId()));
sb.append(“\r\n itemId: ” + String.valueOf(item.getItemId()));
sb.append(“\r\n order: ” + String.valueOf(item.getOrder()));
sb.append(“\r\n title: ” + item.getTitle());
tv.setText(sb.toString());

return super.onOptionsItemSelected(item);
}
}

Uygulamanın import bölümünü yenilemeyi unutmayalım (CTRL+SHIFT+O).

Yukarıdaki yazdığımız kodu ayrıntılı bir şekilde inceleyelim.

onCreateOptionsMenu – Bu metod ilk defa menü açıldığında çağrılıyor. Menü oluşuyor ve sonra kullanılmıyor. Burada menünün seçenekleri ekliyoruz.

onPrepareOptionsMenu –  Menü her açıldığında kullanılıyor. Burada daha önce oluştuğumuz menüde değişikleri yapabiliriz.

onOptionsItemSelected – Menü düğmeye basıldığı zaman çağrılıyor. Burada hangi seçeneği seçtiğinizi görebilirsiniz.

OnCreateOptionsMenu metodunda altı tane menü seçeneği ekliyoruz. Add metodunun parametreleri inceleyelim.

Birinci parametre – grubun ID’sidir. İlk üç seçenekte bu parametre sıfıra eşittir, kalan üç tanesinde ise bir değerine eşittir. Yani copy, paste ve exit seçeneklerinin ID’si bire eşittir. Grubun ID’sini onPrepareOptionsMenu metodunda kullanacağız.

İkinci parametre – menü seçeneklerin ID’si. İşletici hangi menü seçeneğini seçtiğinizi öğrenmek için kullanıyor. Bu parametreyi onOptionsItemSelected metodunda kullanacağız.

Üçüncü parametre – menü seçeneğinin pozisyonu belirleniyor. Sıralama küçüğünden büyüğe gerçekleşiyor.

Dördüncü parametre – menünün seçeneklerde gözüken yazısıdır.

onPrepareOptionsMenu metoduna Menu nesnesi gönderilir ve bu nesneyi kullanabiliriz. Örneğimizde setGroupVisible metodu kullanıyoruz. Bu metod, menü seçeneklerini saklama veya gösterme özelliği sunuyor. İki parametre mevcut, birinci parametre grubun ID’sidir ve ikinci parametre ise boolean değeridir. Grubun ID’si olarak “1” yazıyoruz (Copy, paste ve exit grubu), boolean parametrelerinde CheckBox değeri kullanacağız. CheckBox işaretlediği zaman ekranda ID = 1 grubu göreceğiz. İşaret yoksa görmeyeceğiz.

Kaydedelim ve çalıştıralım.

“Basit” menü:

basit menu

 

“Gelişmiş” menü:

gelismis menu

CheckBox durumuna göre menü 3 veya 6 tane seçenek gösteriyor. Sıralama order parametresine göre yapılıyor. Eğer order değeri birkaç parametrede aynıysa, sıralama kodlarda (onCreateOptionsMenu metodunun içinde) pozisyona göre yapılıyor.

Bir menü seçeneklere basıldığında onOptionsItemSelected metodu bu eylemi işletiyor. Bu metod TextView kullanarak basılmış olan seçenek hakkında bilgi veriyor.

Programı daha iyi anlamak için yeni menü seçenekleri ekleyebilirsiniz ve ekranda hangi pozisyonları alacaklarını araştırabilirsiniz.

 XML – Menü

Menü oluşturmak için daha kullanışlı bir yöntem mevcut. Bu yöntemde layout’taki gibi xml dosyaları kullanacağız. Aynı menüyü oluşturmak için res/menu klasöründe yeni mymenu.xml dosyasını oluşturuyoruz.

<?xml version="1.0" encoding="utf-8"?>
<menu
 xmlns:android="http://schemas.android.com/apk/res/android">
<item
 android:id="@+id/menu_add"
 android:title="add">
</item>
<item
 android:id="@+id/menu_edit"
 android:title="edit">
</item>
<item
 android:id="@+id/menu_delete"
 android:orderInCategory="3"
 android:title="delete">
</item>
<group
 android:id="@+id/group1">
<item
 android:id="@+id/menu_copy"
 android:orderInCategory="1"
 android:title="copy">
</item>
<item
 android:id="@+id/menu_paste"
 android:orderInCategory="2"
 android:title="paste">
</item>
<item
 android:id="@+id/menu_exit"
 android:orderInCategory="4"
 android:title="exit">
</item>
</group>
</menu>

Burada item – menünün seçeneği ve group – gruptur. Ekrandaki nesnelerde kullandığımız gibi ID parametreleri için @+id/<your_ID formülü kullanıyoruz. Eclipse otomatik olarak ID parametreler için R.java dosyasında ID’leri oluşturacak.

orderInCategory – menü seçeneklerin sıralanması ve title – metini belirleniyor.

onCreateOptionsMenu metodunda artık tek tek menü seçenekleri oluşturmaya gerek kalmadı. Yapacağımız tek şey Menu nesneyi xml-dosyayla bağlamaktır.

public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.mymenu, menu);
    return super.onCreateOptionsMenu(menu);
  }

 

getMenuInflater metodu yardımıyla MenuInflater metodu kullanabiliriz. MenuInflater bize inflate metodu kullanmaya imkanları sağlıyor. İnflate iki tane giriş değişkeni kullanıyor. Birinci mymenu.xml ve ikinci menu nesne değişkeni. MenuInflater metodu mymenu.xml kullanarak menu nesnenin içeriğini dolduruyor. Yani mymenu.xml dosyasından menü seçenekleri menu nesnesine kopyalanıyor.

Grubu gizlemek için aynı setGroupVisible metodu kullanıyoruz. ID grubu burada R.id.group1 olarak gerçekleşiyor.

Xml-dosya’nın parametreleri daha ayrıntılı öğrenmek için burada  faydalanabilirsiniz.

Gördüğünüz gibi bu derste iki tane menü oluşturma yöntemleri öğrendik. Birinci yöntem (Programlama) daha esnektir, ikinci (XML) ise daha kısadır (Kodu yazmayı azalıyor).

Gelecek dersimizde içerik menüsü (Context Menu) oluşturmayı öğreneceğiz.

Etiketler: add(CharSequence title)add(int groupIdAndroid programlamaCharSequence title)EclipsegetMenuInflatergroupIdinflateint itemIdint orderitemIdMenuInflaterorderorderInCategorytitle
Paylaş5Paylaş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

  • IPhone 17 Pro Max'te Face ID, yüze kadar yaklaştırıldığında çalışıyor
  • 6000-8000TL oyuncu koltuğu önerisi
  • Üniversitelerde ara tatil nasıl oluyor?
  • Bir Tanrı'ya inanıyor musunuz?
  • FC 26 Showcase gelir mi?
  • Casio MTP-VT01L-1BUD2F alınır mı?
  • 2 SSD'li bilgisayara Ubuntu ve Windows olarak çift OS kurmak
  • Hangi PSU tercih edilmeli?
  • 1000-2000 TL Logitech G PRO X DeX 2 veya benzer şekilli mouse önerisi
  • Kurtlar Vadisi Pusu bölümündeki "Al Ömrümü" şarkısını söyleyen sanatçı kimdir?

Technopat Video

Şu an oynayan

Dreame Z30 kablosuz dikey süpürge incelemesi

Dreame Z30 kablosuz dikey süpürge incelemesi

Dreame Z30 kablosuz dikey süpürge incelemesi

Ev Teknolojileri
vivo v60 lite

Şarj etmeyi unutturuyor! vivo V60 Lite inceleme

Haber
Apple Watch’u bambaşka bir seviyeye taşıyan 5 uygulama

Apple Watch’u bambaşka bir seviyeye taşıyan 5 uygulama

Akıllı Saat

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.
Netse
Ç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}
Onayı Yönet
En iyi deneyimleri sunmak için, cihaz bilgilerini saklamak ve/veya bunlara erişmek amacıyla çerezler gibi teknolojiler kullanıyoruz. Bu teknolojilere izin vermek, bu sitedeki tarama davranışı veya benzersiz kimlikler gibi verileri işlememize izin verecektir. Onay vermemek veya onayı geri çekmek, belirli özellikleri ve işlevleri olumsuz etkileyebilir.
Fonksiyonel Her zaman aktif
Teknik depolama veya erişim, abone veya kullanıcı tarafından açıkça talep edilen belirli bir hizmetin kullanılmasını sağlamak veya bir elektronik iletişim ağı üzerinden bir iletişimin iletimini gerçekleştirmek amacıyla meşru bir amaç için kesinlikle gereklidir.
Tercihler
Teknik depolama veya erişim, abone veya kullanıcı tarafından talep edilmeyen tercihlerin saklanmasının meşru amacı için gereklidir.
İstatistik
Sadece istatistiksel amaçlar için kullanılan teknik depolama veya erişim. Sadece anonim istatistiksel amaçlar için kullanılan teknik depolama veya erişim. Mahkeme celbi, İnternet Hizmet Sağlayıcınızın gönüllü uyumu veya üçüncü bir taraftan ek kayıtlar olmadan, yalnızca bu amaçla depolanan veya alınan bilgiler genellikle kimliğinizi belirlemek için kullanılamaz.
Pazarlama
Teknik depolama veya erişim, reklam göndermek için kullanıcı profilleri oluşturmak veya benzer pazarlama amaçları için kullanıcıyı bir web sitesinde veya birkaç web sitesinde izlemek için 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 görüntüle
{title} {title} {title}
Sonuç bulunamadı
Bütün Sonuçları Göster
  • Giriş
  • Teknoloji Haberleri
  • Sosyal
  • Video
  • Tavsiyeler
  • İncelemeler
    • Video İncelemeler
  • Güvenlik
  • Oyun
  • Makale
    • Pratik
    • Yazar Köşeleri

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