Merhabalar, bugün android üzerinde ufak denemeler yaparken iç sınıftan dışardaki sınıfa erişmem gerekti. Sonuç olarak erişim sağladım fakat olayın mantığını anlayamadım.

Özetle; Bir butonum var ve bu butonun onClickLister'ını iç sınıf olarak tanımladım. Butona tıklandığında bir ses çıkmasını istedim. MediaPlayer nesnesinin altındaki create metodu bizden 2 argüman bekliyor bunlardan 1.'si Context tipinde bir nesne. Kullandığımız sınıfı Activity'den türettiğimiz için 1. argüman olarak this gönderebiliyoruz. (Activity'de context'den türüyor) . Sonuç olarak dış sınıf activy'den türemediği için mediaplayer.create'a context tipinde bir nesne gönderemiyordum. Sorunu aşağıdaki gibi çözdüm fakat; anlamadığım nokta myMenu.this oldu. Bu şekilde classAdi.class classAdi.this gibi bir çok tanım gördüm. Bunların ne anlama geldiğini açıklayabilir misiniz ?

Kod ;

package com.yunusoksuz.basics;

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

public class myMenu extends Activity {

    MediaPlayer mp;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Button b = (Button) findViewById(R.id.tutorial1);
        btn1Listener btn1listen = new btn1Listener();
        b.setOnClickListener(btn1listen);

    }

    private class btn1Listener implements OnClickListener{

        public void onClick(View v) { 
            mp = mp.create(myMenu.this, R.raw.batterycritical); // burasi
            mp.start();
            startActivity(new Intent("com.yunusoksuz.Basics.TUTONE"));
        }

    }

}

soruldu: 03 Tem '12, 13:53

oksuz's gravatar image

oksuz
126348
cevap kabul oranı: 33%

değiştirildi: 03 Tem '12, 14:27

%C3%B6zcanacar's gravatar image

özcanacar ♦♦
17.2k59183183

Cevaplar için teşekkür ederim fakat benim bu soruyu sormamdaki amaç classAdi.class classAdi.this gibi olayların tam tanımlarını almakta. classAdi.this olayını anladım. classAdi.class kaldı :) Neden bu şekilde bir kullanım var ?

(04 Tem '12, 02:35) oksuz oksuz's gravatar image

myMenu sınıfının o anki objesi olarak düşünebilirsiniz. Mesela btn1Listener sınıfının içinden myMenu.this.mp şeklinde myMenu sınıfının içerisindeki method ve fieldlara ulaşabilirsiniz.

permanent link

cevaplandı: 03 Tem '12, 14:35

baran's gravatar image

baran
2.1k81939
cevap kabul oranı: 30%

Bir node yapısı gibi mi hocam ? peki myMenu.class neyi ifade ediyor ?

(03 Tem '12, 14:50) oksuz oksuz's gravatar image
1

myMenu.class direk myMenu sınıf yapısını temsil ediyor. Sınıf içerisindeki method yada alt sınıf listesine bu şekilde ulaşılabilir yada new myMenu() yerine myMenu.class.newInstance() yapısı kullanılabilir. Bazen hangi sınıf ile uğraşıldığı belli olmadığı durumlarda kullanılabiliyor. Örnek olarak Android API ile geliştiriciye açık olmayan bazı noktalara bu şekilde ulaşılabiliyor da https://code.google.com/p/buwifi/source/browse/trunk/BUwifi/src/org/buyabi/buwifi/NetworkConfig.java

(03 Tem '12, 15:56) baran baran's gravatar image

Context nesneleri uygulama ve ya bulunduğun sınıfın son durumunu ve gerekli bilgileri tutar.

Yeni bir nesne oluşturduğunda bu nesnenin uygulama hakkında ne olup bittiğinden ya da uygulamanın o anki durumundan haberi olması için bu nedenle Context nesneleri ilk argüman olarak kullanılır.

getApplicationContext(),getContext(),getBaseContext() ile uygulamanın genel durumuna ve bilgilerine ulaşabilirsin.İçinde bulunduğun sınıfın içinde sınıfIsmi.this ile de o sınıf için Context alabilirsin.

Daha detaylı bilgi için Android dökümantasyonuna bakmanı tavsiye ederim.

http://developer.android.com/reference/android/content/Context.html

permanent link

cevaplandı: 03 Tem '12, 15:30

Serdar%20Do%C4%9Fruyol's gravatar image

Serdar Doğruyol
331411
cevap kabul oranı: 11%

mp = mp.create(myMenu.this, R.raw.batterycritical); // burasi mp.start();

şuraları inner class'da değilde direk myMenu classında, setContentView(R.layout.main); altında tanımlayarak yapsan?

permanent link

cevaplandı: 01 Eki '12, 09:20

lastarabos's gravatar image

lastarabos
1.8k122742
cevap kabul oranı: 29%

Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×819

Soruldu: 03 Tem '12, 13:53

Görüntüleme: 670 kez

Son güncelleme: 01 Eki '12, 09:20

powered by BitNami OSQA