Turkcell | Geleceği Yazanlar

Soru & Cevap

Context

21.12.2014 - 09:47

Merhaba arkadaşlar.Activity extends etmediğimiz class'ımızda Activity metotlarınıda kullanamıyoruz.Bu soruyu sorduğumuzda çözümüde context kavramını kullanmak olarak bir cevap alıyorum.Ancak bu context kavarmı hakkında baya bilgi eksiğim var.Bu konuyu Activty class' ı ve normal bir class üzerinden örnek le anlatabilecek veya kaynak gösterecek arkadaşımız varmı?

3101 Görüntülenme

3 Cevap

Zafer M ŞEN
21.12.2014 - 17:52

2. Ornek 

Bu class'ımızda

[code]
public class CustomPhoneStateListener extends PhoneStateListener {.

    .

    .     .     }
[/code]

activity Extends edlimedi ği için startActivtyForResault çalışmaz ben bunu burda nasıl çalıştırabilrm

[code]
private static final int ACTIVITY_RECORD_SOUND = 1; Intent intent = new Intent(MediaStore.Audio.Media.RECORD_SOUND_ACTION); startActivityForResult(intent, ACTIVITY_RECORD_SOUND);


protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode == Activity.RESULT_OK) { switch (requestCode) { case ACTIVITY_RECORD_SOUND: data.getDataString(); break; } } }
 


[/code]

hocam 1.ve 2. cevaplardaki context Kullanımı nasıl olmalıdr

 

Sitede yorum yapabilmek için giriş yapın ya da üye olun.

Muhammed ÇOBANOĞLU
22.12.2014 - 15:06
"MainActivity" içerisinde "CustomPhoneStateListener" bu sınıfı nasıl kullandığını bilmemekle birlikte eğer bu sınıfı MainActivity içerisinde çağırıyorsan "CustomPhoneStateListener" sınıfı içerisinde bir tane context değeri alan construtor oluşturup oraya "MainActivity" içerisinde tanımladığın context'i gönderebilirsin. Yani private Context contex; public CustomPhoneStateListener(Context contex){ this.context = context; } şeklinde bir constructor oluşturarak "context. startActivityForResult()" şeklinde bir kullanım yapabilirsin.
Zafer M ŞEN
21.12.2014 - 17:48

Hocam örnek üzerinde göstermek gerekirse.

1.Ornek Olarak;

 

[code]public class MainActivity extends Activity{

....

...

@Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        bufferSize = AudioRecord.getMinBufferSize(RECORDER_SAMPLERATE,RECORDER_CHANNELS,RECORDER_AUDIO_ENCODING);
    }.

.

.

.

public  void startRecording(){
                recorder = new AudioRecord(MediaRecorder.AudioSource.MIC,
                                                RECORDER_SAMPLERATE, RECORDER_CHANNELS,RECORDER_AUDIO_ENCODING, bufferSize);

                recorder.startRecording();

                isRecording = true;

                recordingThread = new Thread(new Runnable() {

                        @Override
                        public void run() {
                                writeAudioDataToFile();
                        }
                },"AudioRecorder Thread");

                recordingThread.start();
        }

.

.

.

[/code] Böyle Bir activity class'ımzda startRecord metot'umuzu var.

Bu metotdu;

[code]public class CustomPhoneStateListener extends PhoneStateListener {.

.

.

.

}[/code] Bu class'ımda nasıl çağıracağım

 

 

Sitede yorum yapabilmek için giriş yapın ya da üye olun.

Muhammed ÇOBANOĞLU
22.12.2014 - 14:59
"startRecording()" bu metodu "public void" değil de "public static void" olarak tanımladığında" MainActivity.startRecording()" şeklinde çağırabilirsin.
Muhammed ÇOBANOĞLU
21.12.2014 - 13:17

Activity içerisinde bir tane "Context" tanımlayarak dışardan istediğin gibi ulaşabilirsin.

MainActivity.java

...

public static Context context;

onCreate(){

context = MainActivity.this;

}

Dışardan bu class'ın context'ine ulaşmak istersen MainActivity.context ile ulaşabilirsin.

Kolay gelsin.

Sitede yorum yapabilmek için giriş yapın ya da üye olun.

Ahmet Burak Demirkoparan
21.12.2014 - 14:27
Static context tanımlamak sakıncalıdır memory leak'a sebep olur.O yüzden this parametresini senin üzerinden işlem yapacak classa göndermek daha mantıklıdır.
Muhammed ÇOBANOĞLU
21.12.2014 - 14:53
Yorumun için teşekkür ederim.

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.