Merhaba elimde bi kac sayfadan olusan bir uygulama var. Her sayfa da birer tane togglebutton var. ilk sayfadaki toggle button gayet güzel calısıyor, ancak örnegin ben ikinci sayfaya gecip oradaki togglebutton u calıstırdıgımda ve sayfadan cıkıs yaptıgımda button OFF konumuna geciyor ve tabi bu arada müzik arkada calmaya devam edıyor. Buttondaki bu otomatik OFF yapma sıkıntısını nasıl asabılırım? Teşekkürler.

soruldu: 03 Ara '13, 05:25

coder86's gravatar image

coder86
220223035
cevap kabul oranı: 0%


Selamlar, Nasıl yapacağınla ilgili bir örnek yaptım. Örnekte 2 tane activity var, her birinde birer toggle buton ve sayfayı diğerine yöçnlendiren buton var, bunlar üzerinden anlatmaya çalıştım. Paylaşıyorum kodları:

İlk olarak bir Application class ından inherit edilmiş class oluşturacağız. İçine iki tane boolean değer tanımlıcaz. Uygulamamızda kullanacağımız toggle butonlar için.

package com.example.exampleproj;

import android.app.Application;

/**
* @author Yahya Can
*
*/

public class ExampleApp extends Application {

private boolean toggle1;
private boolean toggle2;

public boolean isToggle1() {
    return toggle1;
}
public void setToggle1(boolean toggle1) {
    this.toggle1 = toggle1;
}
public boolean isToggle2() {
    return toggle2;
}
public void setToggle2(boolean toggle2) {
    this.toggle2 = toggle2;
}

}

Sonra gidip bu class ın bizim application class ımız olduğunu manifestte belirtmemiz gerekiyor.(Application tag inin içinde ,android:name="com.example.exampleproj.ExampleApp") Ben ativityleri de tanımladım tabi ek olarak. Manifes dosyam alttaki gibi :

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.exampleproj"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="8" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme"
    android:name="com.example.exampleproj.ExampleApp" >
    <activity
        android:name="com.example.exampleproj.FirstActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name="com.example.exampleproj.SecondActivity" />
</application>

</manifest>

Activity lerim alttaki gibi:

FirstActivity.java

package com.example.exampleproj;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.ToggleButton;

/**
* @author Yahya Can
*
*/
public class FirstActivity extends Activity {

ToggleButton toggle;
Button btnGoSecActivity;
ExampleApp app;

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

    app = (ExampleApp) getApplicationContext();

    btnGoSecActivity = (Button) findViewById(R.id.btnGoSecActivity);
    toggle = (ToggleButton) findViewById(R.id.toggle1);

    toggle.setChecked(app.isToggle1());

    toggle.setOnCheckedChangeListener(new OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton arg0, boolean arg1) {
            app.setToggle1(arg1);
        }
    });
    btnGoSecActivity.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            startActivity(new Intent(getApplicationContext(), SecondActivity.class));
        }
    });

}

}

SecaondActivity.java

package com.example.exampleproj;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.ToggleButton;

/**
 * @author Yahya Can
 *
 */
public class SecondActivity extends Activity {

ToggleButton toggle;
Button btnGoFirstActivity;
ExampleApp app;

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

    app = (ExampleApp) getApplicationContext();

    toggle = (ToggleButton) findViewById(R.id.toggle2);
    btnGoFirstActivity = (Button) findViewById(R.id.btnGoFirstActivity);

    toggle.setChecked(app.isToggle2());

    toggle.setOnCheckedChangeListener(new OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            app.setToggle2(isChecked);
        }
    });
    btnGoFirstActivity.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            startActivity(new Intent(getApplicationContext(), FirstActivity.class));
        }
    });
}

}

xml layout dosyalarım : activity_first.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">

<Button 
    android:id="@+id/btnGoSecActivity"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:text="Go Second Activity"/>

<ToggleButton 
    android:id="@+id/toggle1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"/>

</RelativeLayout>

activity_second.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">

<Button 
    android:id="@+id/btnGoFirstActivity"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:text="Go First Activity"/>

<ToggleButton 
    android:id="@+id/toggle2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"/>

</RelativeLayout>

Kodları aynen kullanırsanız çalışacaktır. Application class ınızın içine koyduğunuz değerler uygulamanız açık kaldığı sürece bellekte tutulur. Uygulama kapandığı anda gider.

İyi çalışmalar,

permanent link

cevaplandı: 11 Ara '13, 09:44

yahyacan55's gravatar image

yahyacan55
645313
cevap kabul oranı: 21%

Ne kadar teşekkür etsem azdır . Yardımınız için çok teşekkür ederim, çok çok sağolun.

İyi çalışmalar dilerim.

(11 Ara '13, 10:32) coder86 coder86's gravatar image

Önemli değil. Yalnız bu gibi cevapları puanlarsanız iyi olur. Sizin gibi aynı durumla karşılaşan kişiler arama yaptığında bu cevaplara daha rahat ulaşabilirler.

(11 Ara '13, 10:46) yahyacan55 yahyacan55's gravatar image

@coder86, bu tür teşekkür yorumlarını lütfen yorum olarak yazınız. yahya arkadaşımızın cevabı işinizi gördüyse, doğru cevap olarak işaretleyip, soruyu kapatınız lütfen.

(11 Ara '13, 11:17) Turgay Can Turgay%20Can's gravatar image

Puanladım. Yanlız kücük bir sıkıntı daha var. İkinci sayfadaki togglebutton ilk sayfadakine göre çalısıyor yani ilk sayfadaki kapalıysa kapalı acıksa acık kalıyor.Birbirlernden bağımsız çalışmaları mümkün mü acaba?

(11 Ara '13, 12:03) coder86 coder86's gravatar image
1

Verdiğim örnekte birbirinden bağımsız çalışıyor zaten. Kendi uygulamanıza entegre ettiyseniz, toggle butonlara, application class ınızda tuttuğunuz aynı değeri atamadığınızdan emin olun.

(11 Ara '13, 16:34) yahyacan55 yahyacan55's gravatar image

Teşekkür ederim.

(12 Ara '13, 04:49) coder86 coder86's gravatar image
6 yorumdan 5 tanesi gösteriliyor hepsini göster

Değişkenin scope'unu activity bazında değilde, uygulama bazında yaparsanız sanırım rahatça kontrol edebilirsiniz.

http://stackoverflow.com/questions/1944656/android-global-variable

Linkte örnek bir tanımlama mevcut.

permanent link

cevaplandı: 03 Ara '13, 05:32

Turgay%20Can's gravatar image

Turgay Can
8.3k63798
cevap kabul oranı: 18%

Cvabınız icin teşekkür ederim. Ancak application bazında ele aldıgımda sayfalar arası geçisi nasıl sağlayacagım. StartActivity ile bağlantı kuruyodum activity oldugunda. Bunu nasıl aşabilirim?

(03 Ara '13, 06:13) coder86 coder86's gravatar image

Arkadaşın verdiği örnekte gösteriyor aslında. Siz ikinci activity de toogle button için application class ında tanımladığınız değeri setliceksiniz. Tabi ikinci activity nizin başında her zaman toogle butonunuzu bu değerle setlemeniz gerekiyor. Böylece değer hafıza da uygulama açık kaldıkça duruyor. Siz 2. sayfaya girdiğinizde direk app sınıfından değeri okuyup setlediğiniz için toggle butonun en son hali duruyor.

(04 Ara '13, 01:02) yahyacan55 yahyacan55's gravatar image

Cevap için teşekkür ederim yahyacan55. Valla acıkcası bu konu kafamı karıstırdı,app den extend edildiginde bütün metodlar falan değişiyor bütün çatı değişiyor. Acaba bana kücük bir örnekle nasıl togglebutton u nasıl yönetebilirim ve app tabanlı sınıflarda sayfaları nasıl birbirine bağlayabilirim gösterebilir misin? Şimdiden teşekkürler.

(11 Ara '13, 03:43) coder86 coder86's gravatar image
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:

×818

Soruldu: 03 Ara '13, 05:25

Görüntüleme: 829 kez

Son güncelleme: 12 Ara '13, 04:49

powered by BitNami OSQA