• Tidak ada hasil yang ditemukan

Tutorial Android Contoh Aplikasi Sistem

N/A
N/A
Protected

Academic year: 2018

Membagikan "Tutorial Android Contoh Aplikasi Sistem"

Copied!
57
0
0

Teks penuh

(1)

Tutorial Android : Contoh Aplikasi Sistem Informasi

Akademik Berbasis Android

Hari ini dan malam minggu kemarin, saya benar-benar menjadi penghuni setia di lab litbang kampus. Ngebut untuk membuat jurnal penelitian yang akan disetorkan ke kampus, demi sedikit recehan untuk makan-makan di KFC. Saya

menargetkan 3 jurnal selesai dalam waktu 1 minggu ke depan, yaw mudah-mudahan saja bisa selesai tepat waktu. Ada ketentuan baru dalam pengajuan jurnal penelitian di kampus saya, ruang lingkupnya harus sudah setara dengan skripsi. Kalau bisa selesai 3 jurnal, artinya saya sudah 3 kali skripsi kali yaw (#haha). Salah satu dari ketiga jurnal tersebut, saya menyetorkan jurnal tentang aplikasi sistem informasi akademik berbasis android dengan memanfaatkan web service. Yuppzzz, pengembangan dari aplikasi yang saya

seminarkan di KNSI STIKOM Bali bulan februari lalu. Lumayan tuh, bisa jadi judul skripsi bagi rekan-rekan yang belum punya judul skripsi (#ngakaks). Sekalian juga deh, saya bagikan contoh aplikasinya disini. Tapi harap maklum coding-nya masih acakadut, baru belajar nih+aplikasinya cuma dibuat dalam waktu 1 hari.

(2)
(3)

Sederhana banget kan..??? Dan parahnya saya baru tau kalau aplikasi ini tidak bisa berjalan di android versi 2,3 ke atas :(. Masalahnya ialah di android 2,3 ke atas pengaksesan via httprequest tidak diperbolehkan langsung dari main UI. Solusinya bisa

menggunakan AsyncTask(), silahkan ditambahkan sendiri yaw :p. OK deh, sekian dulu postingan singkat saya kali ini. Sekarang mau lanjut buat jurnalnya dulu, biar uangnya cepat cair (#haha). Semoga bisa bermanfaat untuk kita semua.

Happy Blogging and Keep Coding

Tutorial Android : Membuat Tab Layout Sederhana

di Aplikasi Android

12-year-old girl wins $256,000 lawsuit against her

(4)

Proses acc duit beasiswa hari ini cukup membuat saya jengkel, terkesan berbelit-belit dan dipersulit. Padahal itu beasiswa dari pusat, kalau misalnya datang dari kampus sih saya masih bisa terima prosesnya dipersulit. Saya menyesal, karena dulu duitnya langsung masuk ke rekening kampus, alasannya sih langsung dipakai untuk bayar semester depan. Besok-besok kalau duit seminar nasional saya sudah cair, ogah deh dimasukin ke pembiayaan untuk semester depan, itu mah akal bulus kampus doang. Nahhh, daripada ruwet ngurusin kampus yang dari awal saya kuliah gak pernah benar (apalagi si engkong, dosen dewa yang gak pernah mau disalahkan), mending posting lagi tentang tutorial android. Tutorial sederhana kali ini membahas

tentang cara membuat sebuah tab layout/tab menu di aplikasi android. Tab layout ini sama dengan tab menu di aplikasi-aplikasi pada umumnya, fungsinya agar bisa

menampilkan beberapa tampilan dalam 1 halaman. Tampilan disini maksudnya adalah beberapa activity yang berbeda. Cara membuatnya cukup mudah dan berikut langkah-langkahnya. Cekidot gan…

(5)

2. Disini kita akan membuat 3 tab berbeda, yang membutuhkan 4 activity. 1 sebagai frame layout dan sisanya sebagai view yang akan nongol di frame tersebut. Otomatis juga

(6)

File main.xml :

<?xml version="1.0" encoding="utf-8"?>

<TabHost xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/tabhost"

android:layout_width="fill_parent" android:layout_height="fill_parent"> <LinearLayout

android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TabWidget

(7)

<FrameLayout android:orientation="vertical" >

<TextView android:text="Ini Ubuntu" android:orientation="vertical" >

<TextView android:text="Ini Mandriva" android:orientation="vertical" >

<TextView android:text="Ini Arch Linux"

3. Masih berhubungan dengan tampilan alias layout. Saya tambahkan sedikit agar ketika salah satu tab terseleksi, maka icon-nya berubah. Buat 3 buah file xml dan tempatkan di folder drawable.

(8)

<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android"> <!-- When selected, use grey -->

<item android:drawable="@drawable/ubuntu" android:state_selected="true" /> <!-- When not selected, use white-->

<item android:drawable="@drawable/ubuntu_hover" /> </selector>

File style_mandriva.xml :

<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android"> <!-- When selected, use grey -->

<item android:drawable="@drawable/mandriva" android:state_selected="true" /> <!-- When not selected, use white-->

<item android:drawable="@drawable/mandriva_hover" /> </selector>

File style_arch.xml :

<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android"> <!-- When selected, use grey -->

<item android:drawable="@drawable/arch" android:state_selected="true" /> <!-- When not selected, use white-->

<item android:drawable="@drawable/arch_hover" /> </selector>

4. Sekarang kita melangkah ke pembuatan activity, karena sudah terdapat 1 file activity, jadinya kita hanya perlu membuat 3 activity lainnya.

File TabLayoutSederhana.java :

public class TabLayoutSederhanaActivity extends TabActivity { @Override

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(R.layout.main);

TabHost tabHost = getTabHost();

TabSpec ubuntu = tabHost.newTabSpec("Ubuntu"); ubuntu.setIndicator("Ubuntu",

getResources().getDrawable(R.drawable.style_ubuntu));

Intent ubuntuIntent = new Intent(this, UbuntuActivity.class); ubuntu.setContent(ubuntuIntent);

TabSpec mandriva = tabHost.newTabSpec("Mandriva"); mandriva.setIndicator("Mandriva",

(9)

Intent mandrivaIntent = new Intent(this, MandrivaActivity.class); mandriva.setContent(mandrivaIntent);

TabSpec arch = tabHost.newTabSpec("Arch Linux"); arch.setIndicator("Arch Linux",

getResources().getDrawable(R.drawable.style_arch));

Intent archIntent = new Intent(this, ArchActivity.class); arch.setContent(archIntent);

File UbuntuActivity.java :

public class UbuntuActivity extends Activity{

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(R.layout.ubuntu); }

}

File MandrivaActivity.java :

public class MandrivaActivity extends Activity {

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(R.layout.mandriva); }

}

File ArchActivity.java :

public class ArchActivity extends Activity {

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(R.layout.arch); }

}

5. Yang terakhir, kita perlu mendaftarkan file-file activity di atas ke dalam

file AndroidManifest.xml. Kalau tidak didaftarkan, dijamin aplikasi akan force closed duluan :p.

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="dlmbg.pckg.tab.layout"

android:versionCode="1" android:versionName="1.0" >

<uses-sdk android:minSdkVersion="10" />

<application

(10)

<activity

android:name=".TabLayoutSederhanaActivity" 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=".UbuntuActivity" /> <activity android:name=".MandrivaActivity" /> <activity android:name=".ArchActivity" /> </application>

</manifest>

6. Jalankan via emulator, kira-kira hasilnya seperti di bawah ini :

Tab Layout/Tab Menu ini sangat mempermudah kita untuk menangani beberapa

(11)

Happy Blogging and Keep Coding

Tutorial Android : Menampilkan Data dari Database

SQLite ke ListView

Man arrested for feeding sausage to police

horse

(BWNToday)

Haaahhh, baru bisa posting lagi di hari minggu yang tumben sejuk seperti ini. Kali ini saya nangkring di Lab. Litbang kampus, koneksi internetnya cukup kencang lah. Pokoknya kalo dipake donlod, yang liat pasti ngiler deh :D. Berhubung di rumah TV saya sedang bermasalah, sekalian saja saya nonton TV online dengan koneksi kencang yang nganggur di kampus. Cukup lama juga saya tidak nonton acara TV, biasanya paling nangkringin laptop. Sambil nonton TV online, saya mau berbagi sedikit nih tentang tutorial android. Yupzzz, android. Semoga rekan-rekan gak bosan dengan postingan saya yang akhir-akhir ini membahas tentang android. Kali ini saya akan membahas tentang database

SQLite,dimana database ini sudah tersedia langsung di dalam OS android.

Karena memang sama-sama SQL, querynya sama dengan database MySQL. Diawali dengan membuat database, membuat struktur tabel dan memanfaatkan adapter

dari SQLiteDatabase untuk melakukan fungsi DML (Data Manipulation Language). Setelah itu, datanya akan ditampilkan ke dalam sebuah ListView dengan memanfaatkan

CursorAdapter. Gak usah banyak penjelasan, kita langsung aja ke cara pembuatannya. Cekidot gan….

(12)

2. Kita akan memanfaatkan SQLiteOpenHelper sebagai class yang berfungsi untuk

menangani koneksi ke database. Diantaranya fungsi DDL (Data Definition Language) dan DML. Buat sebuah file class baru dengan nama DBHelper.javayang meng-extends class SQLiteOpenHelper.

1 public class DBHelper extends SQLiteOpenHelper { 2 public DBHelper(Context context) {

3 super(context, "sekolah_db", null, 1); 4 }

5

6 @Override

7 public void onCreate(SQLiteDatabase db) { 8 //db.execSQL("");

9 } 10

(13)

12 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 13 //db.execSQL("");

14 onCreate(db); 15 }

16

17 public void tambah(SQLiteDatabase db) {

18 String[] nama_sis = newString[]

{ "Gede", "Okky", "Untung", "Puji","Willy", "Ayus"};

19 String[] alamat_sis = new{ "Denpasar", "Banyuwangi", "Situbondo","Rogojampi", "Purwoharjo", "RogojamString[] pi"};

Saya sisipkan sebuah function untuk melakukan input ke dalam tabel, value-nya saya acak dari beberapa string yang saya simpan di dalam sebuah array. Dan fungsi insert ini akan berjalan setiap kali aplikasi dibuka (taruh di event onCreate). Ouw yaw, itu ada syntax yang saya mark, querynya saya hilangkan karena tidak bisa disimpan ke dalam database blog ini :). Untuk melihat query-nya, silahkan donlod saja contoh programnya di akhir postingan ini.

3. Sekarang kita buat sebuah activity yang akan menampilkan data dari dalam database SQLite ke dalam sebuah ListView. Buka file SqliteToListviewActivity.java dan ketikkan code di bawah ini :

1 publicclassSqliteToListviewActivity extendsListActivity { 2

3 privateSQLiteDatabase db;

4 privateCursorAdapter data_sumber;

5 privatestaticfinal String kolom[] = {"nama", "alamat",BaseColumns._ID }; 6 DBHelper helper = newDBHelper(this); 7

8 @Override

9 publicvoid onCreate(Bundle savedInstanceState) { 10 super.onCreate(savedInstanceState);

11 ListView view = getListView();

(14)

19 publicvoid muat_ulang() 20 {

21 Cursor data = db.query("bio_siswa", kolom, null, null, null, null,null);

22 data_sumber = newSimpleCursorAdapter(this, R.layout.row, data, kolom,newint[] { R.id.nama, R.id.alamat });

Untuk melakukan query untuk seleksi record dalam database, bisa menggunakan fungsi .rawquery() atau dengan .query(). Dan disini saya menggunakan

fungsi .query() karena tidak perlu memasukkan perintah select SQL, .query() mirip dengan pattern active record di CI. Data dari database disimpan terlebih dahulu dalam

CursorAdapter. Kemudian ditampilkan ke dalam ListView denga fungsi setListAdapter().

4. Yang terakhir, kita perlu membuat sebuah desain layout untuk menampung data-data dari database. Buat sebuah file layout baru (klik kanan folder layout > New > Android XML File) dan ketikkan kode layout di bawah ini :

1 <?xml version="1.0"encoding="utf-8"?>

2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:layout_height="wrap_content"

4 android:id="@+id/layoutBaris" 5 android:orientation="horizontal" 6 android:layout_width="fill_parent"> 7

8 <TextView

9 android:layout_width="wrap_content"

10 android:layout_height="wrap_content"

11 android:layout_alignParentLeft="true" 12 android:id="@+id/nama"

13 android:text="Nama" 14 android:textSize="15sp" 15 android:padding="10dip"/> 16 <TextView

17 android:layout_width="wrap_content" 18 android:layout_alignParentRight="true" 19 android:layout_height="wrap_content" 20 android:id="@+id/alamat"

(15)

24 android:padding="10dip"/> 25

26 </RelativeLayout>

5. Tes aplikasi via emulator, kira-kira hasilnya seperti gambar di bawah ini :

Nah itu langkah-langkah dasar untuk membuat sebuah aplikasi database sederhana dengan memanfaatkan SQLite. Terus terang saja, ketika mencoba untuk membuat aplikasi ini sering mengalami forced close setiap akan mencobanya ke dalam emulatornya :(. Kebanyakan karena kesalahan mengisi parameter dari CursorAdapter dan SqliteOpenHelper nya. Setelah dicoba dan hampir putus asa, akhirnya bisa juga =)). OK deh, sekian dulu postingan saya di hari minggu yang sejuk ini. Semoga bisa bermanfaat untuk rekan-rekan.

Happy Blogging and Keep Coding

Tutorial Android : Membuat Kalkulator

Biner-Desimal Sederhana di Android

Woman killed from sneezing while

(16)

Kondisi tubuh yang kurang fit melanda saya mulai tadi pagi, gara-gara kemarin malam saya paksakan untuk begadang di ITSolution demi

menyeselesaikan jurnal. Tidur jam setengah 4 dan bangun lagi jam setengah 8 untuk berangkat kuliah yang jadwalnya sangat-sangat nanggung nyelempit di akhir pekan seperti ini. Belum lagi rasa rindu untuk pulang ke denpasar di pertengahan bulan seperti ini, namun apa daya pekerjaan dan tugas kampus yang masih numpuk minta giliran untuk di-action. Apalagi mata kuliah machine learning yang diajarkan oleh pak hadiq, yang selalu menjadi momok setiap kali seliweran di pikiran saya :(. Yang terpenting di bawa hepi+santai ajalah, bila perlu tugasnya gak usah dikumpulin, dijamin tambah santai :ngakaks:. Nah, sambil mengisi waktu kosong di malam yang hawanya panas ini, saya akan membagikan sedikit tutorial untuk membuat sebuah kalkulator biner sederhana di android. Yuppzzz,

memang sudah banyak tutorial yang berseliweran di internet yang membahas tentang cara konversi biner ke desimal maupun sebaliknya. Berhubung saya lagi sedang

senang-senangnya membuat aplikasi sederhana di platform android, tak ada salahnya untuk dicoba. Hitung-hitung cari pengalaman+nambah postingan :p.

Yang terpenting di aplikasi kalkulator ini hanya proses perhitungannya saja, untuk event tombol cuma sekedar pemanis. Bagi yang sudah pernah membuat versi java-nya, syntax’nya sama saja. Tinggal mengubah atau menambahkan desain form bagi yang awalnya hanya berupa tampilan console. OK deh, kita langsung aja ke cara pembuatannya. Cekidot mas berooo…

(17)

2. Disini saya menggunakan 2 activity, yaitu KalkulatorBinerActivity untuk melakukan konversi dari desimal ke biner dan KalkulatorDesimalActivity untuk melakukan konveri dari biner ke desimal. Kodenya seperti di bawah ini :

KalkulatorBinerActivity.java

1 publicclassKalkulatorBinerActivity extendsActivity {

2 /** Called when the activity is first created. */

3 EditText t_in,t_out;

4 Button b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b_hps,b_ke_desimal,b_biner;

5 String var_in="";

6 @Override

7 publicvoid onCreate(Bundle savedInstanceState) {

8 super.onCreate(savedInstanceState);

9 requestWindowFeature(Window.FEATURE_NO_TITLE);

10

getWindow().setFlags(WindowManager.LayoutParams .FLAG_FULLSCREEN,

WindowManager.LayoutParams.FLAG_FULLSCREEN);

11 setContentView(R.layout.main);

(18)

13 t_in = (EditText) findViewById(R.id.txt_in);

14 t_out = (EditText) findViewById(R.id.txt_out);

15 b0 = (Button) findViewById(R.id.btn0);

16 b1 = (Button) findViewById(R.id.btn1);

17 b2 = (Button) findViewById(R.id.btn2);

18 b3 = (Button) findViewById(R.id.btn3);

19 b4 = (Button) findViewById(R.id.btn4);

20 b5 = (Button) findViewById(R.id.btn5);

21 b6 = (Button) findViewById(R.id.btn6);

22 b7 = (Button) findViewById(R.id.btn7);

23 b8 = (Button) findViewById(R.id.btn8);

24 b9 = (Button) findViewById(R.id.btn9);

25 b_hps = (Button) findViewById(R.id.btn_hapus);

26 b_ke_desimal = (Button) findViewById(R.id.btn_ke_desimal);

27 b_biner = (Button) findViewById(R.id.btn_biner);

28

29 b1.setOnClickListener(newOnClickListener() {

30 publicvoid onClick(View v) {

31 if(var_in.trim().equals(""))

32 {

33 var_in = "1";

34 t_in.setText(var_in);

35 }

36 else

37 {

38 var_in = t_in.getText().toString()+"1";

(19)

40 }

41 }

42 });

43

44 b2.setOnClickListener(newOnClickListener() {

45 publicvoid onClick(View v) {

46 if(var_in.trim().equals(""))

47 {

48 var_in = "2";

49 t_in.setText(var_in);

50 }

51 else

52 {

53 var_in = t_in.getText().toString()+"2";

54 t_in.setText(var_in);

55 }

56 }

57 });

58

59 b3.setOnClickListener(newOnClickListener() {

60 publicvoid onClick(View v) {

61 if(var_in.trim().equals(""))

62 {

63 var_in = "3";

64 t_in.setText(var_in);

65 }

(20)

67 {

68 var_in = t_in.getText().toString()+"3";

69 t_in.setText(var_in);

70 }

71 }

72 });

73

74 b4.setOnClickListener(newOnClickListener() {

75 publicvoid onClick(View v) {

76 if(var_in.trim().equals(""))

77 {

78 var_in = "4";

79 t_in.setText(var_in);

80 }

81 else

82 {

83 var_in = t_in.getText().toString()+"4";

84 t_in.setText(var_in);

85 }

86 }

87 });

88

89 b5.setOnClickListener(newOnClickListener() {

90 publicvoid onClick(View v) {

91 if(var_in.trim().equals(""))

92 {

(21)

94 t_in.setText(var_in);

95 }

96 else

97 {

98 var_in = t_in.getText().toString()+"5";

99 t_in.setText(var_in);

100 }

101 }

102 });

103

104 b6.setOnClickListener(newOnClickListener() {

105 publicvoid onClick(View v) {

106 if(var_in.trim().equals(""))

107 {

108 var_in = "6";

109 t_in.setText(var_in);

110 }

111 else

112 {

113 var_in = t_in.getText().toString()+"6";

114 t_in.setText(var_in);

115 }

116 }

117 });

118

119 b7.setOnClickListener(newOnClickListener() {

(22)

121 if(var_in.trim().equals(""))

122 {

123 var_in = "7";

124 t_in.setText(var_in);

125 }

126 else

127 {

128 var_in = t_in.getText().toString()+"7";

129 t_in.setText(var_in);

130 }

131 }

132 });

133

134 b8.setOnClickListener(newOnClickListener() {

135 publicvoid onClick(View v) {

136 if(var_in.trim().equals(""))

137 {

138 var_in = "8";

139 t_in.setText(var_in);

140 }

141 else

142 {

143 var_in = t_in.getText().toString()+"8";

144 t_in.setText(var_in);

145 }

146 }

(23)

148

149 b9.setOnClickListener(newOnClickListener() {

150 publicvoid onClick(View v) {

151 if(var_in.trim().equals(""))

152 {

153 var_in = "9";

154 t_in.setText(var_in);

155 }

156 else

157 {

158 var_in = t_in.getText().toString()+"9";

159 t_in.setText(var_in);

160 }

161 }

162 });

163

164 b0.setOnClickListener(newOnClickListener() {

165 publicvoid onClick(View v) {

166 if(var_in.trim().equals(""))

167 {

168 var_in = "0";

169 t_in.setText(var_in);

170 }

171 else

172 {

173 var_in = t_in.getText().toString()+"0";

(24)

175 }

176 }

177 });

178

179 b_hps.setOnClickListener(newOnClickListener() {

180 publicvoid onClick(View v) {

181 t_in.setText("");

182 t_out.setText("");

183 }

184 });

185

186 b_biner.setOnClickListener(newOnClickListener() {

187 publicvoid onClick(View v) {

188 if(var_in!="")

189 {

190 String hasil =

DesimalKeBiner(Integer.parseInt(var_in));

191 t_out.setText(hasil);

192 var_in="";

193 }

194

195 }

196 });

197

198 b_ke_desimal.setOnClickListener(newOnClickListener() {

199 publicvoid onClick(View v) {

(25)

201 t_out.setText("");

202 var_in="";

203 Intent i = newIntent(getApplicationContext(), KalkulatorDesimalActivity.class);

204 startActivity(i);

205 }

206 });

207 }

208

209 publicString DesimalKeBiner(int angka_desimal)

210 {

211 int sisa_bagi=0, i=0;

212 boolean ulang=true;

213 int[] arr_simpan = newint[10000];

214 sisa_bagi=angka_desimal;

215

216 String hasil="";

217 while(ulang==true)

218 {

219 sisa_bagi = angka_desimal%2;

220 angka_desimal= angka_desimal/2;

221 arr_simpan[i]=sisa_bagi;

222 i++;

223 if((angka_desimal==0)||(angka_desimal==1))

224 {

225 ulang=false;

(26)

227 }

228 }

229 for(int a=i; a>=0;a--)

230 {

231 hasil += arr_simpan[a];

232 }

233 returnhasil;

234 }

235

236 publicboolean onCreateOptionsMenu(Menu menu) {

237 MenuInflater inflater = getMenuInflater();

238 inflater.inflate(R.menu.opt_menu, menu);

239 returntrue;

240 }

241

242 publicboolean onOptionsItemSelected(MenuItem item) {

243 switch(item.getItemId()) {

244 caseR.id.tentang:

245 AlertDialog alertDialog;

246 alertDialog = newAlertDialog.Builder(this).create();

247 alertDialog.setTitle("Sekilas Biner");

248 alertDialog.setMessage("Bilangan biner adalah salah satu sistem bilangan yang digunakan pada komputer. "+

249 "Berbeda dengan sistem bilangan desimal yang sering kita gunakan sehari-hari, "+

250 "sistem bilangan biner hanya menggunakan dua bilangan yaitu 0 (nol) dan 1 (satu). "+

(27)

Lumbung\nhttp://gedelumbung.com");

252 alertDialog.setButton("#OKOK", newDialogInterface.OnClickL istener() {

253 @Override

254 publicvoid onClick(DialogInterface dialog, int which) {

255 dialog.dismiss();

256 }

257 });

258 alertDialog.show();

259 returntrue;

260 caseR.id.keluar:

26

1 Intent exit= newIntent(Intent.ACTION_MAIN);

26 2

exit.addCategory(Intent.CATEGORY_HOME);exit.setFlags(Intent .FLAG_ACTIVITY_NEW_TASK);

263 KalkulatorBinerActivity.this.finish();

264 startActivity(exit);

265 returntrue;

266 default:

267 returnsuper.onOptionsItemSelected(item);

268 }

269 }

270 }

KalkulatorDesimalActivity.java

1 publicclassKalkulatorDesimalActivity extendsActivity {

2 /** Called when the activity is first created. */

3 EditText t_in,t_out;

4 Button b0,b1,b_hps,b_ke_biner,b_desimal;

(28)

6 @Override

7 publicvoid onCreate(Bundle savedInstanceState) {

8 super.onCreate(savedInstanceState);

9 requestWindowFeature(Window.FEATURE_NO_TITLE);

10

getWindow().setFlags(WindowManager.LayoutParams .FLAG_FULLSCREEN,

WindowManager.LayoutParams.FLAG_FULLSCREEN);

11 setContentView(R.layout.second);

12

13 t_in = (EditText) findViewById(R.id.txt_in);

14 t_out = (EditText) findViewById(R.id.txt_out);

15 b0 = (Button) findViewById(R.id.btn0);

16 b1 = (Button) findViewById(R.id.btn1);

17 b_hps = (Button) findViewById(R.id.btn_hapus);

18 b_ke_biner = (Button) findViewById(R.id.btn_ke_biner);

19 b_desimal = (Button) findViewById(R.id.btn_desimal);

20

21 b1.setOnClickListener(newOnClickListener() {

22 publicvoid onClick(View v) {

23 if(var_in.trim().equals(""))

24 {

25 var_in = "1";

26 t_in.setText(var_in);

27 }

28 else

29 {

30 var_in = t_in.getText().toString()+"1";

(29)

32 }

33 }

34 });

35

36 b0.setOnClickListener(newOnClickListener() {

37 publicvoid onClick(View v) {

38 if(var_in.trim().equals(""))

39 {

40 var_in = "0";

41 t_in.setText(var_in);

42 }

43 else

44 {

45 var_in = t_in.getText().toString()+"0";

46 t_in.setText(var_in);

47 }

48 }

49 });

50

51 b_hps.setOnClickListener(newOnClickListener() {

52 publicvoid onClick(View v) {

53 t_in.setText("");

54 t_out.setText("");

55 }

56 });

(30)

58 b_desimal.setOnClickListener(newOnClickListener() {

59 publicvoid onClick(View v) {

60 if(var_in!="")

61 {

62 int hasil = BinerKeDesimal(Integer.parseInt(var_in));

63 t_out.setText(Double.toString(hasil));

64 var_in="";

65 }

66

67 }

68 });

69

70 b_ke_biner.setOnClickListener(newOnClickListener() {

71 publicvoid onClick(View v) {

72 KalkulatorDesimalActivity.this.finish();

73 }

74 });

75 }

76

77 publicint BinerKeDesimal(int angka_desimal)

78 {

79 String bil = Integer.toString(angka_desimal);

80 int[] arr_simpan= newint[10000];

81 String[] str= newString[10000];

82 double hasil=0;

83 int hasil_akhir=0;

(31)

85 char t;

86

87 for(int i=0;i < bil.length();i++)

88 {

89 t = bil.charAt(i);

90 str[i]=Character.toString(t);

91 }

92

93 for(int i=bil.length()-1; i>=0;i--)

94 {

95 arr_simpan[a]=Integer.parseInt(str[i]);

96 hasil= arr_simpan[a]* (Math.pow(2,a));

97 hasil_akhir=hasil_akhir+(int)hasil;

98 a++;

99 }

100 returnhasil_akhir;

101 }

102

103 publicboolean onCreateOptionsMenu(Menu menu) {

104 MenuInflater inflater = getMenuInflater();

105 inflater.inflate(R.menu.opt_menu, menu);

106 returntrue;

107 }

108

109 publicboolean onOptionsItemSelected(MenuItem item) {

110 switch(item.getItemId()) {

(32)

112 AlertDialog alertDialog;

113 alertDialog = newAlertDialog.Builder(this).create();

114 alertDialog.setTitle("Sekilas Biner");

115 alertDialog.setMessage("Bilangan biner adalah salah satu sistem bilangan yang digunakan pada komputer. "+

116 "Berbeda dengan sistem bilangan desimal yang sering kita gunakan sehari-hari, "+

117 "sistem bilangan biner hanya menggunakan dua bilangan yaitu 0 (nol) dan 1 (satu). "+

118 "\n\nSalam, Gede

(33)

135 }

136 }

137 }

3. Karena menggunakan 2 buah activity, otomatis juga membutuhkan 2 buah layout yang berbeda. Saya tambahkan satu layout untuk layout options menu, saya tempatkan pada folder menu/opt_menu.xml. Jadi total terdapat 3 buah layout.

main.xml

1 <?xml version="1.0"encoding="utf-8"?>

2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

3 android:layout_width="fill_parent"

4 android:layout_height="fill_parent"

5 android:orientation="vertical"

6 android:padding="10dip">

7

8 <LinearLayout

9 android:layout_width="fill_parent"

10 android:layout_height="fill_parent"

11 android:layout_weight="1"

12 android:orientation="horizontal">

13

14 <TextView

15 android:layout_width="68dp"

16 android:layout_height="wrap_content"

17 android:gravity="bottom"

18 android:singleLine="true"

19 android:text="Input : "

20 android:textSize="18sp"

(34)

22 android:typeface="normal"/>

23

24 <EditText

25 android:id="@+id/txt_in"

26 android:layout_width="fill_parent"

27 android:layout_height="wrap_content"

28 android:layout_weight="1"

29 android:editable="false"

30 android:gravity="bottom"

31 android:singleLine="true"

32 android:textSize="30sp"

33 android:textStyle="normal"

34 android:typeface="normal"/>

35

36 </LinearLayout>

37

38 <LinearLayout

39 android:layout_width="fill_parent"

40 android:layout_height="fill_parent"

41 android:layout_weight="1"

42 android:orientation="horizontal">

43

44 <TextView

45 android:layout_width="68dp"

46 android:layout_height="wrap_content"

47 android:gravity="bottom"

48 android:singleLine="true"

(35)

50 android:textSize="18sp"

51 android:textStyle="normal"

52 android:typeface="normal"/>

53

54 <EditText

55 android:id="@+id/txt_out"

56 android:layout_width="fill_parent"

57 android:layout_height="wrap_content"

58 android:layout_weight="1"

59 android:editable="false"

60 android:gravity="bottom"

61 android:singleLine="true"

62 android:textSize="30sp"

63 android:textStyle="normal"

64 android:typeface="normal"/>

65

66 </LinearLayout>

67

68 <LinearLayout

69 android:layout_width="fill_parent"

70 android:layout_height="fill_parent"

71 android:layout_weight="1"

72 android:orientation="horizontal">

73

74 <Button

75 android:id="@+id/btn7"

(36)

77 android:layout_height="fill_parent"

78 android:layout_weight="1"

79 android:gravity="center"

80 android:padding="0px"

81 android:text="7"

82 android:textSize="24sp"

83 android:textStyle="bold"/>

84

85 <Button

86 android:id="@+id/btn8"

87 android:layout_width="fill_parent"

88 android:layout_height="fill_parent"

89 android:layout_weight="1"

90 android:gravity="center"

91 android:padding="0px"

92 android:text="8"

93 android:textSize="24sp"

94 android:textStyle="bold"/>

95

96 <Button

97 android:id="@+id/btn9"

98 android:layout_width="fill_parent"

99 android:layout_height="fill_parent"

100 android:layout_weight="1"

101 android:gravity="center"

102 android:padding="0px"

(37)

104 android:textSize="24sp"

105 android:textStyle="bold"/>

106 </LinearLayout>

107

108 <LinearLayout

109 android:layout_width="fill_parent"

110 android:layout_height="fill_parent"

111 android:layout_weight="1"

112 android:orientation="horizontal">

113

114 <Button

115 android:id="@+id/btn4"

116 android:layout_width="fill_parent"

117 android:layout_height="fill_parent"

118 android:layout_weight="1"

119 android:gravity="center"

120 android:padding="0px"

121 android:text="4"

122 android:textSize="24sp"

123 android:textStyle="bold"/>

124

125 <Button

126 android:id="@+id/btn5"

127 android:layout_width="fill_parent"

128 android:layout_height="fill_parent"

129 android:layout_weight="1"

(38)

131 android:padding="0px"

132 android:text="5"

133 android:textSize="24sp"

134 android:textStyle="bold"/>

135

136 <Button

137 android:id="@+id/btn6"

138 android:layout_width="fill_parent"

139 android:layout_height="fill_parent"

140 android:layout_weight="1"

141 android:gravity="center"

142 android:padding="0px"

143 android:text="6"

144 android:textSize="24sp"

145 android:textStyle="bold"/>

146 </LinearLayout>

147

148 <LinearLayout

149 android:layout_width="fill_parent"

150 android:layout_height="fill_parent"

151 android:layout_weight="1"

152 android:orientation="horizontal">

153

154 <Button

155 android:id="@+id/btn1"

156 android:layout_width="fill_parent"

(39)

158 android:layout_weight="1"

159 android:gravity="center"

160 android:padding="0px"

161 android:text="1"

162 android:textSize="24sp"

163 android:textStyle="bold"/>

164

165 <Button

166 android:id="@+id/btn2"

167 android:layout_width="fill_parent"

168 android:layout_height="fill_parent"

169 android:layout_weight="1"

170 android:gravity="center"

171 android:padding="0px"

172 android:text="2"

173 android:textSize="24sp"

174 android:textStyle="bold"/>

175

176 <Button

177 android:id="@+id/btn3"

178 android:layout_width="fill_parent"

179 android:layout_height="fill_parent"

180 android:layout_weight="1"

181 android:gravity="center"

182 android:padding="0px"

183 android:text="3"

(40)

185 android:textStyle="bold"/>

186 </LinearLayout>

187

188 <LinearLayout

189 android:layout_width="fill_parent"

190 android:layout_height="fill_parent"

191 android:layout_weight="1"

192 android:orientation="horizontal">

193

194 <Button

195 android:id="@+id/btn0"

196 android:layout_width="fill_parent"

197 android:layout_height="fill_parent"

198 android:layout_span="2"

199 android:layout_weight="1"

200 android:gravity="center"

201 android:padding="0px"

202 android:text="0"

203 android:textSize="23sp"

204 android:textStyle="bold"/>

205

206 <Button

207 android:id="@+id/btn_hapus"

208 android:layout_width="fill_parent"

209 android:layout_height="fill_parent"

210 android:layout_weight="1"

(41)

212 android:padding="0px"

213 android:text="#HAPUS"

214 android:textSize="23sp"

215 android:textStyle="bold"/>

216

217 <Button

218 android:id="@+id/btn_biner"

219 android:layout_width="fill_parent"

220 android:layout_height="fill_parent"

221 android:layout_weight="1"

222 android:gravity="center"

223 android:padding="0px"

224 android:text="#OKOK"

225 android:textSize="23sp"

226 android:textStyle="bold"/>

227 </LinearLayout>

228

229 <LinearLayout

230 android:layout_width="fill_parent"

231 android:layout_height="fill_parent"

232 android:layout_weight="1"

233 android:orientation="horizontal">

234

235 <Button

236 android:id="@+id/btn_ke_desimal"

237 android:layout_width="fill_parent"

(42)

239 android:layout_span="2"

240 android:layout_weight="1"

241 android:gravity="center"

242 android:padding="0px"

243 android:text="Biner ke Desimal"

244 android:textSize="23sp"

245 android:textStyle="bold"/>

246 </LinearLayout>

247

248 </LinearLayout>

second.xml

1 <?xml version="1.0"encoding="utf-8"?>

2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

3 android:layout_width="fill_parent"

4 android:layout_height="fill_parent"

5 android:orientation="vertical"

6 android:padding="10dip">

7

8 <LinearLayout

9 android:layout_width="fill_parent"

10 android:layout_height="fill_parent"

11 android:layout_weight="1"

12 android:orientation="horizontal">

13

14 <TextView

15 android:layout_width="68dp"

(43)

17 android:gravity="bottom"

18 android:singleLine="true"

19 android:text="Input : "

20 android:textSize="18sp"

21 android:textStyle="normal"

22 android:typeface="normal"/>

23

24 <EditText

25 android:id="@+id/txt_in"

26 android:layout_width="fill_parent"

27 android:layout_height="wrap_content"

28 android:layout_weight="1"

29 android:editable="false"

30 android:gravity="bottom"

31 android:singleLine="true"

32 android:textSize="30sp"

33 android:textStyle="normal"

34 android:typeface="normal"/>

35

36 </LinearLayout>

37

38 <LinearLayout

39 android:layout_width="fill_parent"

40 android:layout_height="fill_parent"

41 android:layout_weight="1"

42 android:orientation="horizontal">

43

(44)

45 android:layout_width="68dp"

46 android:layout_height="wrap_content"

47 android:gravity="bottom"

48 android:singleLine="true"

49 android:text="Output : "

50 android:textSize="18sp"

51 android:textStyle="normal"

52 android:typeface="normal"/>

53

54 <EditText

55 android:id="@+id/txt_out"

56 android:layout_width="fill_parent"

57 android:layout_height="wrap_content"

58 android:layout_weight="1"

59 android:editable="false"

60 android:gravity="bottom"

61 android:singleLine="true"

62 android:textSize="30sp"

63 android:textStyle="normal"

64 android:typeface="normal"/>

65

66 </LinearLayout>

67

68 <LinearLayout

69 android:layout_width="fill_parent"

70 android:layout_height="fill_parent"

(45)

72 android:orientation="horizontal">

73

74 <Button

75 android:id="@+id/btn0"

76 android:layout_width="fill_parent"

77 android:layout_height="fill_parent"

78 android:layout_weight="1"

79 android:gravity="center"

80 android:padding="0px"

81 android:text="0"

82 android:textSize="24sp"

83 android:textStyle="bold"/>

84 </LinearLayout>

85

86 <LinearLayout

87 android:layout_width="fill_parent"

88 android:layout_height="fill_parent"

89 android:layout_weight="1"

90 android:orientation="horizontal">

91

92 <Button

93 android:id="@+id/btn1"

94 android:layout_width="fill_parent"

95 android:layout_height="fill_parent"

96 android:layout_weight="1"

97 android:gravity="center"

(46)

99 android:text="1"

100 android:textSize="24sp"

101 android:textStyle="bold"/>

102 </LinearLayout>

103

104 <LinearLayout

105 android:layout_width="fill_parent"

106 android:layout_height="fill_parent"

107 android:layout_weight="1"

108 android:orientation="horizontal">

109

110 <Button

111 android:id="@+id/btn_hapus"

112 android:layout_width="fill_parent"

113 android:layout_height="fill_parent"

114 android:layout_weight="1"

115 android:gravity="center"

116 android:padding="0px"

117 android:text="#HAPUS"

118 android:textSize="23sp"

119 android:textStyle="bold"/>

120

121 <Button

122 android:id="@+id/btn_desimal"

123 android:layout_width="fill_parent"

124 android:layout_height="fill_parent"

(47)

126 android:gravity="center"

127 android:padding="0px"

128 android:text="#OKOK"

129 android:textSize="23sp"

130 android:textStyle="bold"/>

131 </LinearLayout>

132

133 <LinearLayout

134 android:layout_width="fill_parent"

135 android:layout_height="fill_parent"

136 android:layout_weight="1"

137 android:orientation="horizontal">

138

139 <Button

140 android:id="@+id/btn_ke_biner"

141 android:layout_width="fill_parent"

142 android:layout_height="fill_parent"

143 android:layout_span="2"

144 android:layout_weight="1"

145 android:gravity="center"

146 android:padding="0px"

147 android:text="Desimal ke Biner"

148 android:textSize="23sp"

149 android:textStyle="bold"/>

150 </LinearLayout>

151

(48)

opt_menu.xml

1 <menu xmlns:android="http://schemas.android.com/apk/res/android">

2 <item android:id="@+id/tentang"

3 android:icon="@drawable/tentang"

4 android:title="Apa itu Biner?"/>

5 <item android:id="@+id/keluar"

6 android:icon="@drawable/logout"

7 android:title="Keluar | Metu"/>

8 </menu>

4. Yang terakhir, kita perlu mendaftarkan activity yang kedua di dalam file AndroidManifest.xml.

1 <?xml version="1.0"encoding="utf-8"?>

2 <manifest xmlns:android="http://schemas.android.com/apk/res/android"

3 package="dlmbg.pckg.kalkulator.biner"

4 android:versionCode="1"

5 android:versionName="1.0">

6

7 <uses-sdk android:minSdkVersion="10"/>

8

9 <application

10 android:icon="@drawable/ic_launcher"

11 android:label="@string/app_name">

12 <activity

13 android:name=".KalkulatorBinerActivity"

14 android:label="Kalkulator Biner">

(49)

16 <action android:name="android.intent.action.MAIN"/>

17

18 <category android:name="android.intent.category.LAUNCHER"/>

19 </intent-filter>

20 </activity>

21

<activity

android:name="KalkulatorDesimalActivity"android:label="Kalkulator Desimal"></activity>

22 </application>

23

24 </manifest>

(50)

Nahh, gampang kan cara pembuatannya…??? Kalkulator di atas masih bisa ditambahkan dengan fungsi untuk konversi ke hexadesimal dan oktal. Bisa juga ditambahkan tabel gerbang logika, jadinya ketika rekan-rekan sedang mengerjakan ujian mata kuliah sistem digital pasti terbantu (kalau dibolehkan bawa hape lho yaw :D). OK deh, sekian dulu postingan saya kali ini. Semoga bisa bermanfaat untuk kita semua.

Happy Blogging and Keep Coding

18

May 2012

KATEGORI : TUTORIAL ANDROID - Dibaca : 7974 kali Ditulis oleh : Gede Lumbung Ada 33 Komentar Seru

Tutorial Android : Cara Menggunakan AsyncTask di

Android

105-year-old woman gets accepted into

preschool

(BWNToday)

Akhirnya sampai di rumah dan bisa berlibur sejenak dari kegiatan yang aneh-aneh di pulau seberang. Dan yang terpenting saya bisa bertemu lagi dengan si Paijo, Jupiter MX baru yang akan menggantikan Jupiter Z aka Bejo untuk

(51)

yang saya buat, dimana selalu force close jika dijalankan di versi 3.0 ke atas. Setelah mencari masalahnya di logcat, ternyata mulai android versi 3.0 ke atas tidak diperbolehkan untuk mengakses internet secara langsung melalui main activity. Saya coba cari solusinya di stackoverflow dan solusinya kita bisa menggunakan AsyncTask. AsyncTask ini

memungkinkan pengaksesan internet (background data) berjalan di background.

Ketika pertama membaca dokumentasi cara penggunaannya di developer.android.com, saya bingung juga. Saya kira harus mengubah seluruh kode yang berfungsi untuk berkomunikasi via internet. Ternyata hanya perlu menambahkan sebuah class (di dalam public class main activity) yang meng-extends abstract class AsyncTask dan mendefinisikan ketiga method abstract-nya, yaitu onPreExecute(), doInBackground(), dan onPostExecute() pada main activity. Studi kasusnya pada postingan kali ini ialah menampilkan data ke dalam listview dan dicoba pada emulator dengan versi android 4.0.3 alias Ice Cream Sandwich. Proses parsing data dari format JSON dan menyimpannya ke dalam ArrayList dilakukan di method doInBackground(). Kemudian untuk menampilkannya ke dalam listview dilakukan di method onPostExecute(). Dari method onCreate (main activity), kita hanya perlu memanggil class tersebut dengan menambahkan method execute(). Sekarang kita coba untuk

membuatnya, cekidot gan…

1. Siapkan tabelnya terlebih dahulu, tabelnya masih sama seperti postingan yang kemarin. Setelah itu kita buat sebuah file php untuk memanggil data yang ada di dalam tabel dan kita atur sesuai format JSON.

<?php

include("koneksi.php");

$q = mysql_query("SELECT * FROM tbl_artikel"); $v = '{"berita" : [';

while($r=mysql_fetch_array($q)) {

if(strlen($v)<15) {

$v .= '{"judul" : "'.strip_tags($r['judul']).'", "tanggal" : "'.$r['tanggal'].'", "waktu" : "'.$r['waktu'].'"}';

} else {

$v .= ',{"judul" : "'.strip_tags($r['judul']).'", "tanggal" : "'.$r['tanggal'].'", "waktu" : "'.$r['waktu'].'"}';

(52)

3. Seperti biasa, ketika akan menampilkan data ke dalam listview android, kita

membutuhkan 2 buah layout, yaitu main.xml (berisi sebuah listview) dan list_row.xml (berisi textview untuk menempatkan data hasil parsing).

main.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent"

android:layout_height="fill_parent" android:orientation="vertical">

<ListView

android:id="@android:id/list" android:layout_width="fill_parent" android:layout_height="wrap_content" />

</LinearLayout>

list_row.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent"

(53)

android:orientation="horizontal"> <LinearLayout

xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent"

android:layout_height="wrap_content" android:layout_margin="10dp"

android:orientation="vertical">

<TextView

4. Class JSONParser yang saya gunakan masih sama dengan yang di tutorial-tutorial sebelumnya, seperti di bawah ini :

(54)

HttpEntity httpEntity = httpResponse.getEntity();

BufferedReader reader = new BufferedReader(new InputStreamReader(

is, "iso-8859-1"), 8); StringBuilder sb = new StringBuilder(); String line = null;

while ((line = reader.readLine()) != null) { sb.append(line + "\n");

}

is.close();

json = sb.toString(); } catch (Exception e) {

Log.e("Buffer Error", "Error converting result " + e.toString());

}

try {

jObj = new JSONObject(json); } catch (JSONException e) {

Log.e("JSON Parser", "Error parsing data " + e.toString());

}

return jObj;

} }

5. Buka dan edit file TesAsyncTasActivity.java, ketikkan kode di bawah ini. Terdapat sebuah class baru dengan nama AmbilData yang meng-extends abstract class AsyncTask, dengan 3 method yang telah didefinisikan di dalamnya.

public class TesAsyncTaskActivity extends ListActivity {

(55)

public String lo_Koneksi,isi ;

private ProgressDialog pDialog;

ArrayList<HashMap<String, String>> data_map = new ArrayList<HashMap<String, String>>();

@Override

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(R.layout.main); Koneksi lo_Koneksi = new Koneksi(); isi = lo_Koneksi.isi_koneksi(); new AmbilData().execute(); }

class AmbilData extends AsyncTask<String, String, String> { @Override

protected void onPreExecute() { super.onPreExecute();

pDialog = new ProgressDialog(TesAsyncTaskActivity.this); pDialog.setMessage("Sabar gan, masih ngambil data neh..."); pDialog.setIndeterminate(false);

pDialog.setCancelable(true); pDialog.show();

}

protected String doInBackground(String... args) {

String link_url = isi+"berita.php";

JSONParser jParser = new JSONParser();

JSONObject json = jParser.AmbilJson(link_url);

try {

str_json = json.getJSONArray("berita");

for(int i = 0; i < str_json.length(); i++){

JSONObject ar = str_json.getJSONObject(i);

HashMap<String, String> map = new

HashMap<String, String>();

String judul = ar.getString("judul");

String waktu = ar.getString("tanggal")+" | "+ar.getString("waktu");

map.put(in_judul, judul);

map.put(in_waktu, waktu);

(56)

}

protected void onPostExecute(String file_url) { pDialog.dismiss(); String[] { in_judul, in_waktu}, new int[] {R.id.judul, R.id.tanggal});

setListAdapter(adapter);

6. Karena akan mengakses HTTPRequest, jangan lupa untuk menambahkan permisionnya pada file AndroidManifest.xml.

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="dlmbg.pckg.tes.asynctask"

android:versionCode="1" android:versionName="1.0" >

<uses-sdk android:minSdkVersion="10" />

<application

(57)

<uses-permission android:name="android.permission.INTERNET" />

</manifest>

7. Setelah selesai, sekarang kita coba jalankan pada sebuah emulator yang menggunakan android versi 4.0.3 atau 3.0 juga bisa. Akan muncul sebuah DialogBox yang sudah kita buat pada method onPreExecute().

Nah, sekarang ketika akan membuat aplikasi yang membutuhkan komunikasi data internet jangan lupa untuk menambahkan AsyncTask. Agar dapat berjalan di android versi yang lebih tinggi, mengingat saat ini sudah banyak hape android yang menggunakan OS versi terbaru. OK deh, sekian dulu postingan saya kali ini, semoga bermanfaat untuk rekan-rekan yang sedang dibuat galau gara-gara aplikasinya force close di android versi 3.0 ke atas :D.

Referensi

Dokumen terkait

Hasil penelitian ini bertolak belakang Hariyono, Dyah Suryani, Yanuk Wulandari (2009) dengan pendapat Maurits dan Imam (2008) yang bahwa faktor kelelahan menunjukkan

Berdasarkan analisis data dapat disimpulkan bahwa peningkatan kemampuan penalaran matematis siswa yang memperoleh pembelajaran dengan model pembelajaran kooperatif

Berdasarkan hasil penelitian data penelitian , maka hipotesis yang telah diajukan, yaitu ada hubungan positif antara pola asuh demokratis dengan tingkat asertivitas remaja

Sejauh pengamatan peneliti, penelitian mengenai perbedaan adversity quotient pada mahasiswa yang mengikuti Objective Structured Clinical Skills (OSCE) berdasarkan motivasi

Hasil analisis unsur harus sama dengan nilai hasil perhitungan berdasarkan rumus molekul, dan konstanta fisik harus juaga sama dengan nilai yang dilaporkan di

Perancangan bahan ajar dimulai dengan membuat acuan learning outcome program studi pendidikan matematika IKIP PGRI Pontianak sebagai tujuan perkuliahan, antara lain: (a)

Pada lokasi, aliran data yang terjadi pada saat penyimpanan data lokasi yaitu diawali dengan user memasukkan data baru ke dalam kolom yang tersedia kemudian pada saat memilih

Ketika kita membuat sebuah project, kita akan disediakan sebuah class dari activity utama untuk aplikasi android yang dibuat yang nantinya disimpan di dalam direktori src/..