twitter
    Find out what I'm doing, Follow Me :)

Android Programlama Bundle Kullanımı


Android programlamada activiyler arası data geçişi için bundle kullanılır. Bundle yardımıyla bir activitye de mevcut olan data başka bir activitye gönderilebilir. Bir önceki yazımda edittext ten alınan numaranın aranması örnek uygulamasını yapmıştık . Bundle kullanımını öğrenmek için bu uygulama üzerinden değişiklik yapacağız. 

Örnek uygulamamız çalıştığında edittexte bir numara gireceğiz . Butona tıkladığımızda başka bir activity açılacak ve buradaki call butonuna tıkladığımızda bir önceki activityden gelen ve buradaki textviewda görünen numarayı arayacak. Bunun için öncelikle yeni bir xml ve java classı oluşturacağız . Bunlara other.xml ve other.java isimlerini verdim.

other.xml de bir adet textview ve butonumuzu ekliyoruz. Gerekli isimlendirmeleri yaptıktan sonra other.xml içeriği şu şekilde olur :

other.xml :


<?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="vertical" >

    <TextView
        android:id="@+id/tvNumber"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView" />

    <Button
        android:id="@+id/btnCall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Dial" />

    </LinearLayout>


Bu işlemden sonra MainActiviy.java classımızda da aşağıdaki değişiklikleri yapıyoruz :

MainActivity.java :


package com.example.dialnumber;

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

public class MainActivity extends Activity {

     EditText edtNumber ;
     Button btnDial ;
     private Intent intent;
     private Bundle bundle;

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

        edtNumber = (EditText)findViewById(R.id.edtNumber);
  btnDial = (Button)findViewById(R.id.btnDial);      


        btnDial.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
     intent = new Intent("com.example.dialnumber.OTHER");
             bundle = new Bundle();
     bundle.putString("number",edtNumber.getText().toString());
     intent.putExtras(bundle);
     startActivity(intent);
}
});
     }

}



Other.java içeriği ise şu şekildedir :


package com.example.dialnumber;

import android.app.Activity;
import android.content.ActivityNotFoundException;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class other  extends Activity {
TextView tvNumber ;
Button btnCall ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.other);
tvNumber = (TextView)findViewById(R.id.tvNumber);
btnCall = (Button)findViewById(R.id.btnCall);
Bundle datas = getIntent().getExtras();
tvNumber.setText(datas.getString("number"));
btnCall.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialNumber();
}
});
}
public void dialNumber(){
if (!tvNumber.getText().toString().equals("")){
try {
    Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse("tel:"+tvNumber.getText().toString()));
startActivity(callIntent);
} catch (ActivityNotFoundException activityException) {
Log.e("Dialing Example", "Call failed");
}
}else {
Toast.makeText(getApplicationContext(),"Numara Giriniz",Toast.LENGTH_SHORT).show();
}
}
}




Örneğin mainactivityden other acitivitye bir data göndereceğiz . Bunun için Bundle değişkeni ve datanın gönderileceği bir intent oluşturulur. Daha sonra data herhangi bir keyword ile birlikte , örneğin datanın String türde olmasına göre putString komutuyla bundle a konulur. Bundle putExtras ile birlikte intente geçirilir. StartActivity ile de activity başlatılır. Gönderilecek datanın türüne göre String dışında birçok put komutu vardır.(ArrayList, Double ...)

Datanın alınacağı activityde ise intente aktarılan data get komutu ile alınır.

AndroidManifest.xml içeriği :

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

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />
    <uses-permission android:name="android.permission.CALL_PHONE" />
    
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.dialnumber.MainActivity"
            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=".other"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="com.example.dialnumber.OTHER" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
    </application>

</manifest>


Bu şekilde bundle ile activityler arası geçiş yapılmaktadır. Uygulamamızı çalıştırırsak görüntüleri şu şekilde olur :
                  

MainActivitydeki Edittextten diğer activitydeki textview a numaranın aktarılması. ilk ekranda dial butonuna tıklandıgında diğer activitye geçiş yapılır. ikinci activityde dial butonuna tıklandıgında ise textviewda görülen numarayı arar.

Uygulamayı buradan indirebilirsiniz.



0 yorum:

Yorum Gönder