Mehmet Ethem SULAN :: Android :: How to Add a Progress Dialog to your Android Application

Android Activity içinde Progress Dialog oluşturmaya çalıştım. Bazı işlemler için kullanılması gerekir. Uygulamada threadi beklettim dialogun daha iyi görünmesi içn. Android EditTexte android:inputType=”number” şeklinde bir tanımlama yaptığımızda klavyeden sayi dışında başka bir şey yazamıyoruz. RE ile kontrol etme örneği: How to Integer Control In Java with Regular Expression

<EditText android:id="@+id/editText1_prog" android:text="" android:layout_height="wrap_content" android:layout_width="match_parent" android:inputType="number"></EditText>

DialogActivity.java

package com.progess.dialog;

import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class DialogActivity extends Activity{
    private Button start;
    private EditText editText_input;
    private int number;
    private ProgressDialog pDialog;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        start=(Button) findViewById(R.id.button1_progess_aialog_start);
        editText_input=(EditText) findViewById(R.id.editText1_prog);
    }

	@Override
	protected void onStart() {
		super.onStart();

		start.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
//ProgessDialog olusturuyorum
				pDialog=ProgressDialog.show(DialogActivity.this, "Baslik", "Mesaj-Calculating", true);
				pDialog.setCancelable(false);
				number=Integer.valueOf(editText_input.getText().toString());
//Islem surene kadar ekranda gosterriyorum.
				new Thread() {

					public void run() {

					try{
//Islem yapilip DDMS ye log atiyor.
						long fact_result=factoryelHesapla(number);
						Thread.currentThread().sleep(2000);
						Log.d("Sonuc:", String.valueOf(fact_result));

					} catch (Exception e) {

					Log.e("tag", e.getMessage());

					}

//Dismiss this dialog, removing it from the screen. This method can be invoked safely from any thread.

					pDialog.dismiss();

					}

					}.start();//run() metodunu start ediyor.
			}
		});

	}
//Bu ornekte basit olsun diye factoryel yazdim. Mesela wev serviceden databaseden cektiginiz verileri
//json ile parse edip ve sonucu json objesi olarak donderen islem birazcik uzun surdugunde kullanilir bu progress dialog
	public long factoryelHesapla(long sayi)
	{
		if(sayi<=0){
			return 1;
		}else {
			return sayi*factoryelHesapla(sayi-1);
		}
	}
}

main.xml

<?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"
    >
    <EditText android:id="@+id/editText1_prog" android:text="" android:layout_height="wrap_content" android:layout_width="match_parent" android:inputType="number"></EditText>
    <Button android:text="Start" android:id="@+id/button1_progess_aialog_start" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
</LinearLayout>

Download ProgressDialogSam.tar.gz

Comments

There is one comment for this post.

  1. Ercan Pınar on Mayıs 3, 2011 10:03 pm

    Bu çok işime yaradı teşekkürler ethem.

Write a Comment

Let me know what you think?