Showing posts with label android. Show all posts
Showing posts with label android. Show all posts

Monday, October 27, 2014

Android developer : How to start activity for result.

Calling a second activity from the main activity by startActivityForResult. When second activity is finish, it will send back result (some data) to main activity.
How main activity get the result ?

From your FirstActivity call the SecondActivity using startActivityForResult() method

 Intent i = new Intent(this, SecondActivity.class);  
 startActivityForResult(i, 1);  

In your SecondActivity set the data which you want to return back to FirstActivity. If you don't want to return back, don't set any.
For example: In secondActivity if you want to send back data:
 Intent returnIntent = new Intent();  
 returnIntent.putExtra("result",result);  
 setResult(RESULT_OK,returnIntent);  
 finish();  

If you don't want to return data:

 Intent returnIntent = new Intent();  
 setResult(RESULT_CANCELED, returnIntent);  
 finish();  

Now in your FirstActivity class override onActivityResult() method. And process intent data by resultCode.
 protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
   if (requestCode == 1) {  
     if(resultCode == RESULT_OK){  
       String result=data.getStringExtra("result");  
     }  
     if (resultCode == RESULT_CANCELED) {  
       //Write your code if there's no result  
     }  
   }  
 }

reference : http://stackoverflow.com/questions/10407159/how-to-manage-start-activity-for-result-on-android

Monday, October 20, 2014

Android developer : how to cancel alarm

if your app create own alarm. how to cancel it ?
it's imposible to get alarm has been created (by name or by id).
this is a simple way to cancel alarm.
To cancel alarm you can use method AlarmManager.cancel(PENDING_INTENT)
Intent in create alarm and cancel alarm must be same.
there is some sample code.

when you create alarm :
 long nextAlarm = new Date().getTime();  
 Intent alarmIntent = new Intent(this, AlarmReceiver.class);  
 alarmIntent.putExtra(Constants.BundleKey.ALARM_TYPE_KEY, Constants.BundleKey.REPEAT_ALARM_VALUE);  
 PendingIntent pendingIntent = PendingIntent.getBroadcast(context,   
                               99, alarmIntent, PendingIntent.FLAG_CANCEL_CURRENT);  
 AlarmManager alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);  
 alarmManager.set(AlarmManager.RTC_WAKEUP, nextAlarm, pendingIntent);  

when you cancel alarm :
 long nextAlarm = new Date().getTime();   
 Intent alarmIntent = new Intent(this, AlarmReceiver.class);   
 alarmIntent.putExtra(Constants.BundleKey.ALARM_TYPE_KEY, Constants.BundleKey.REPEAT_ALARM_VALUE);   
 PendingIntent pendingIntent = PendingIntent.getBroadcast(context,    
                 99, alarmIntent, PendingIntent.FLAG_CANCEL_CURRENT);   
 AlarmManager alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);   
 alarmManager.cancel(pendingIntent);      

Intent in create and cancel alarm is same "Intent alarmIntent = new Intent(this, AlarmReceiver.class);"

Happy coding .
cheers :)

Sunday, October 19, 2014

My First Android App

This is my first android app on google play.
It is Football Reminder".  This app help you to see a timer when your favourite team playing, and give you and alarm if you're sleeping.

If you're like please download and give rating. :)

https://play.google.com/store/apps/details?id=com.andri.sasuke.footballreminder

Some screenshoots



 cheers :)


Saturday, September 7, 2013

Dependency Injection di Android menggunakan RoboGuice

RoboGuice adalah sebuah framework untuk Dependency Injection di Android. Roboguice membuat code kita jadi lebih simple dan lebih mudah.
RoboGuice dapat melakukan inject View, Resource, System Service atau object lain.

Pada tutorial ini saya ingin menjelaskan sekilas saja contoh penggunaannya.
Langkah pertama download library jar RoboGuice terlebih dulu. pada contoh ini menggunakan roboguice versi 2.0

Library jar pendukung yg diperlukan adalah :
  1. Guice.3.0-no_aop.jar  : https://github.com/roboguice/roboguice/tree/master/roboguice/lib
  2. Roboguice-2.0.jar :  http://repo1.maven.org/maven2/org/roboguice/roboguice/2.0/
  3. Javax.inject-1.jar : http://mvnrepository.com/artifact/javax.inject/javax.inject


Import semua jar tersebut ke dalam forlder ‘libs’ android project kita.

Mungkin dengan banyaknya element (misal : TextView, InputText, Button dll )  yg kita gunakan di sebuah Activity akan membuat kita lebih banyak juga menuliskan code untuk casting findById().
Misalnya : (TextView)   findById(R.id.text_name);
Jika tidak dilakukan hal ini maka element yg kita panggil nanti akan null.
Mungkin jika cuma beberapa tidak masalah. Tapi jika sudah banyak sekali jumlahnya jadi membosankan juga ngetiknya.
Roboguice bisa menjembatani hal ini. 

Mari kita lihat contoh dari code yg default tanpa Injection.

 class TestAtivity extends Activity {   
    TextView name;   
    ImageView thumbnail;   
    LocationManager loc;   
    Drawable icon;   
    String myName;   
    public void onCreate(Bundle savedInstanceState) {   
      super.onCreate(savedInstanceState);   
      setContentView(R.layout.main);  
      name   = (TextView) findViewById(R.id.name);   
      thumbnail = (ImageView) findViewById(R.id.thumbnail);   
      loc    = (LocationManager) getSystemService(Activity.LOCATION_SERVICE);   
      icon   = getResources().getDrawable(R.drawable.icon);   
      myName  = getString(R.string.app_name);   
      name.setText( "Hello, " + myName );   
    }   
  }   

Sekarang kita lihat code yg menggunakan roboguice Injection.

 class TestActivity extends RoboActivity {   
    @InjectView(R.id.name)       TextView name;   
    @InjectView(R.id.thumbnail)    ImageView thumbnail;   
    @InjectResource(R.drawable.icon)  Drawable icon;   
    @InjectResource(R.string.app_name) String myName;   
    @Inject              LocationManager loc;   
    public void onCreate(Bundle savedInstanceState) {   
      super.onCreate(savedInstanceState);   
      setContentView(R.layout.main);  
      name.setText( "Hello, " + myName );   
    }   
  }   

Code yg menggunakan RoboGuice jadi lebih pendek dan sederhana. Baris codenya jadi lebih pendek. Mungkin ini bisa menghemat waktu kita dalam mengetik code.

Langkahnya cukup simple Activity yg kita buat tinggal extendnya kita ubah ke RoboActivity.
Kemudian di deklarasi elementnya ditambahkan @InjectView(id). Id ini diambil dari R id element yg sudah kita buat di layout xml.
Misalnya :  @InjectView(R.id.name) TextView name;

Maka di dalam method onCreate() kita tidak perlu lagi casting findById().
Kita bisa langsung memanggil element itu tanpa takut nilainya null. Misalnya ; name.setText( "Hello, " + myName );
Karena sudah dihandle oleh RoboGuice.

Sekian dulu tutorial dari saya. Mungkin hanya sampai pada injectView saja. Untuk bagian selanjutnya akan saya jelaskan di tutorial selanjutnya.
Untuk penjelasan yang lebih lengkap bisa juga dilihat di https://github.com/roboguice/roboguice/wiki

Selamat mencoba.

Thanks. :)