CRUD adalah singkatan dari create, read, update, and delete. Akronim CRUD mengidentifikasi semua fungsi utama yang melekat pada database relasional dan aplikasi yang digunakan untuk mengelolanya, termasuk Oracle Database, Microsoft SQL Server, MySQL, dan lainnya.
Fungsi create, read, update, dan delete merupakan fungsi yang secara konstan digunakan dan merupakan bagian yang tidak terpisahkan dari pekerjaan seorang programmer. Ini karena hampir sebagian besar pemograman komputer modern menggunakan fungsi CRUD.
Create = Fungsi ini memungkinkanmu membuat record baru dalam database.
Read = Fungsi ini memungkinkan kamu untuk mencari dan mengambil data tertentu dalam tabel dan membaca nilainya.
Update = Untuk memodifikasi record yang telah tersimpan di database.
Delete = Menghapus record yang telah tersimpan di database.
- Langkah awal jalankan apk IDE Android Studio, dengan Cara :
- Name > Tugas13
- Package Name : ubah menjadi nama blog kalian masing-masing, atau juga bisa com.example yg secara otomatis ada di Android studio lalu fiikuti nama project kalian Tugas13.
- SaveLocation : C:\User\acer\Android StudioProjects\Tugas13
- Language > Java
- Minimum API Level > API 16 > Klik Finish
- Kemudian buat layout Linear Layout dengan ketikan kode program activity_main.xml seperti gambar dibawah ini :
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:paddingTop="16dp"
android:paddingBottom="16dp"
tools:context=".MainActivity">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Nama Mahasiswa : "
android:textSize="18dp"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/editTextName"
android:hint="Masukan Nama Anda"
android:inputType="text" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="N R P : "
android:textSize="18dp" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/editTextNRP"
android:inputType="number" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Kelas : "
android:textSize="18dp" />
<Spinner
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/spinnerkelas"
android:spinnerMode="dropdown" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Blog URL : "
android:textSize="18dp"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/editTextBlog"
android:hint="Input Link URL Blog"
android:inputType="text" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Tambah Data Mahasiswa"
android:id="@+id/buttonAdd" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Daftar Mahasiswa"
android:id="@+id/buttonView" />
</LinearLayout>
- Selanjutnya ketikan kode program MainActivity.java sebagai berikut :
package com.example.tugas13;
import androidx.appcompat.app.AppCompatActivity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Toast;
import java.nio.channels.AsynchronousChannelGroup;
import java.util.HashMap;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private EditText editTextName;
private EditText editTextNRP;
private EditText editTextBlog;
private Button buttonAdd;
private Button buttonView;
private Spinner spinnerKelas;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editTextName = findViewById(R.id.editTextName);
editTextNRP = findViewById(R.id.editTextNRP);
editTextBlog = findViewById(R.id.editTextBlog);
buttonAdd = findViewById(R.id.buttonAdd);
buttonView = findViewById(R.id.buttonView);
spinnerKelas = findViewById(R.id.spinnerkelas);
String[] spinnerItem = new String[] {"TI-1","TI-2","TI-3","TI-Malam"};
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_dropdown_item,spinnerItem);
spinnerKelas.setAdapter(adapter);
buttonAdd.setOnClickListener(this);
buttonView.setOnClickListener(this);
}
private void addMhs(){
final String name = editTextName.getText().toString().trim();
final String nrp = editTextNRP.getText().toString().trim();
final String blog = editTextBlog.getText().toString().trim();
final String kelas = (String) spinnerKelas.getSelectedItem();
Log.d("kelas",kelas);
class AddMhs extends AsyncTask <Void,Void,String>{
ProgressDialog loading;
@Override protected void onPreExecute() {
super.onPreExecute();
loading = ProgressDialog.show(MainActivity.this, "Menambahkan . . .",
"Tunggu . . . ",false, false);
}
@Override
protected void onPostExecute(String s){
super.onPostExecute(s);
loading.dismiss();
Toast.makeText(MainActivity.this, s, Toast.LENGTH_LONG).show();
}
@Override
protected String doInBackground(Void... v){
HashMap<String,String> params = new HashMap<>();
params.put(konfigurasi.KEY_MHS_NAMA, name);
params.put(konfigurasi.KEY_MHS_NRP, nrp);
params.put(konfigurasi.KEY_MHS_KELAS, kelas);
params.put(konfigurasi.KEY_MHS_BLOG, blog);
RequestHandler rh = new RequestHandler();
String res = rh.sendPostRequest(konfigurasi.URL_ADD, params);
Log.d("res", res);
return res;
}
}
AddMhs ae = new AddMhs();
ae.execute();
}
@Override
public void onClick (View v){
if (v==buttonAdd){
addMhs();
}
if (v==buttonView){
startActivity(new Intent(this,TampilSemuaMhs.class));
}
}
}
- Klik kanan pada direktori package name > New > Activity > Empty Activity
- Isikan kolom Activity Name dengan TampilanSemuaMhs > klik Finish
- Activity_tampil_semua_mhs.xml Layout ini nantinya akan digunakan untuk melihat semua data mahasiswa yang sudah diinputkan pada layout utama. Silahkan tamabhkan kode-kode dibawah pada layout tersebut :
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
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"
android:orientation="vertical"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:paddingTop="16dp"
android:paddingBottom="16dp"
tools:context=".TampilSemuaMhs">
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/listView" />
</LinearLayout>
- Untuk kode-kode java pada class TampilSemuaMhs.java, ketikan codingan sperti berikut in:
package com.example.tugas13;
import androidx.appcompat.app.AppCompatActivity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.HashMap;
public class TampilSemuaMhs extends AppCompatActivity implements ListView.OnItemClickListener {
private ListView listView;
private String JSON_STRING;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tampil_semua_mhs);
listView = findViewById(R.id.listView);
listView.setOnItemClickListener(this);
getJSON();
}
private void showMhs(){
JSONObject jsonObject = null;
ArrayList <HashMap<String,String>> list = new ArrayList<HashMap<String, String>>();
try {
jsonObject = new JSONObject(JSON_STRING);
JSONArray result = jsonObject.getJSONArray(konfigurasi.TAG_JSON_ARRAY);
for (int i = 0; i<result.length();i++){
JSONObject jo = result.getJSONObject(i);
String id = jo.getString(konfigurasi.TAG_ID);
String name = jo.getString(konfigurasi.TAG_NAMA);
HashMap<String,String> mhs = new HashMap<>();
mhs.put(konfigurasi.TAG_ID, id);
mhs.put(konfigurasi.TAG_NAMA, name);
list.add(mhs);
}
}
catch (JSONException e) {
e.printStackTrace();
}
ListAdapter adapter = new SimpleAdapter(TampilSemuaMhs.this, list,
R.layout.list_item, new String[]{konfigurasi.TAG_ID, konfigurasi.TAG_NAMA},
new int[]{R.id.id, R.id.name});
listView.setAdapter(adapter);
}
private void getJSON(){
class GetJSON extends AsyncTask <Void, Void, String>{
ProgressDialog loading;
@Override
protected void onPreExecute(){
super.onPreExecute();
loading = ProgressDialog.show(TampilSemuaMhs.this,"Mengambil data","Mohon Tunggu",false,false);
}
@Override
protected void onPostExecute(String s){
super.onPostExecute(s);
loading.dismiss();
JSON_STRING = s;
showMhs();
}
@Override
protected String doInBackground(Void... params){
RequestHandler rh = new RequestHandler();
Log.d("Testing","Test");
String s = rh.sendGetRequest(konfigurasi.URL_GET_ALL);
Log.d("response",s);
return s;
}
}
GetJSON gj = new GetJSON();
gj.execute();
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id){
Intent intent = new Intent(this, TampilMhs.class);
HashMap<String,String> map = (HashMap)parent.getItemAtPosition(position);
String mhsID = map.get(konfigurasi.TAG_ID).toString();
intent.putExtra(konfigurasi.MHS_ID,mhsID);
startActivity(intent);
}
}
- Buat activity lagi yang berisi layout list_item.xml dan class KisView. Cara pembuatanya sama dengan point pertama, hanya pada bagian Activity name silahkan isi dengan "ListView" dan Layout Name diisi dengan "list_item" jika sudah klik Finish.
- Class ListView.java tidak usah ditambahkan kode-kode java lagi. Biarkan default saja seperti saat kita membuat class baru. Sedangkan untuk list_item.xml isikan kode brikut ini pada layout :
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/id" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/name" />
</LinearLayout>
package com.example.tugas13;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
public class ListView extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.list_item);
}
}
- Untuk layout activity_tampil_mh.xml sendiri kita ketikan kode programnya sebagai berikut :
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
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"
android:orientation="vertical"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:paddingTop="16dp"
android:paddingBottom="16dp"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="ID Mahasiswa : " />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/editTextId" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Nama Mahasiswa :" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/editTextName" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="N R P :" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/editTextNRP" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Kelas :" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/editTextKelas" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Blog URL :" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/editTextBlog" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Update Data Mahasiswa"
android:id="@+id/buttonUpdate" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Hapus Data"
android:id="@+id/buttonDelete" />
</LinearLayout>
- Untuk kode java pada class TampilMhs.java kita ketikan codingan seperti ini :
package com.example.tugas13;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.HashMap;
public class TampilMhs extends AppCompatActivity implements View.OnClickListener {
private EditText editTextId;
private EditText editTextName;
private EditText editTextNRP;
private EditText editTextBlog;
private Spinner spinnerKelas;
private Button buttonUpdate;
private Button buttonDelete;
private String id;
String[] spinnerItem = new String[] {"TI-1","TI-2","TI-3","TI-Mlm"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tampil_mhs);
Intent intent = getIntent();
id = intent.getStringExtra(konfigurasi.MHS_ID);
editTextId = findViewById(R.id.editTextId);
editTextName = findViewById(R.id.editTextName);
editTextNRP = findViewById(R.id.editTextNRP);
spinnerKelas = findViewById(R.id.spinnerkelas);
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_dropdown_item,spinnerItem);
spinnerKelas.setAdapter(adapter);
editTextBlog = findViewById(R.id.editTextBlog);
buttonUpdate = findViewById(R.id.buttonUpdate);
buttonDelete = findViewById(R.id.buttonDelete);
buttonDelete.setOnClickListener(this);
buttonUpdate.setOnClickListener(this);
editTextId.setText(id);
getMhs();
}
private void getMhs(){
class GetMhs extends AsyncTask<Void,Void,String>{
ProgressDialog loading;
@Override
protected void onPreExecute(){
super.onPreExecute();
loading = ProgressDialog.show(TampilMhs.this,"Fetching . . .","Wait. . .",false,false);
}
@Override
protected void onPostExecute (String s){
super.onPostExecute(s);
loading.dismiss();
showMhs(s);
}
@Override
protected String doInBackground(Void... params){
RequestHandler rh = new RequestHandler();
String s = rh.sendGetRequestParam(konfigurasi.URL_GET_EMP,id);
return s;
}
}
GetMhs ge = new GetMhs();
ge.execute();
}
private void showMhs(String json){
try {
JSONObject jsonObject = new JSONObject(json);
JSONArray result = jsonObject.getJSONArray(konfigurasi.TAG_JSON_ARRAY);
JSONObject c = result.getJSONObject(0);
String name = c.getString(konfigurasi.TAG_NAMA);
String nrp = c.getString(konfigurasi.TAG_NRP);
String kelas = c.getString(konfigurasi.TAG_KELAS);
String blog = c.getString(konfigurasi.TAG_BLOG);
editTextName.setText(name);
editTextNRP.setText(nrp);
ArrayAdapter<String> berhitung = new ArrayAdapter<>(this, android.R.layout.simple_spinner_dropdown_item,spinnerItem);
int selectionPosition= berhitung.getPosition(kelas);
spinnerKelas.setSelection(selectionPosition);
editTextBlog.setText(blog);
}
catch (JSONException e){
e.printStackTrace();
}
}
private void updateMhs(){
final String name = editTextName.getText().toString().trim();
final String nrp = editTextNRP.getText().toString().trim();
final String kelas = (String)spinnerKelas.getSelectedItem();
final String blog = editTextBlog.getText().toString().trim();
class UpdateMhs extends AsyncTask<Void,Void,String>{ ProgressDialog loading;
@Override
protected void onPreExecute() {
super.onPreExecute();
loading = ProgressDialog.show(TampilMhs.this,"Updating...","Wait...",false,
false);
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
loading.dismiss();
Toast.makeText(TampilMhs.this,s,Toast.LENGTH_LONG).show();
}
@Override
protected String doInBackground(Void... params) {
HashMap<String,String> hashMap = new HashMap<>();
hashMap.put(konfigurasi.KEY_MHS_ID,id);
hashMap.put(konfigurasi.KEY_MHS_NAMA,name);
hashMap.put(konfigurasi.KEY_MHS_NRP,nrp);
hashMap.put(konfigurasi.KEY_MHS_KELAS,kelas);
hashMap.put(konfigurasi.KEY_MHS_BLOG,blog);
RequestHandler rh = new RequestHandler();
String s = rh.sendPostRequest(konfigurasi.URL_UPDATE_EMP,hashMap);
Log.d("res",s);
return s;
}
}
UpdateMhs ue = new UpdateMhs();
ue.execute();
}
private void deleteMhs(){
class DeleteMhs extends AsyncTask<Void,Void,String>{
ProgressDialog loading;
@Override
protected void onPreExecute(){
super.onPreExecute();
loading = ProgressDialog.show(TampilMhs.this, "Updating. . .","Tunggu. . .",false,false);
}
@Override
protected void onPostExecute(String s){
super.onPostExecute(s);
loading.dismiss();
Toast.makeText(TampilMhs.this,s,Toast.LENGTH_LONG).show();
}
@Override
protected String doInBackground(Void... params){
RequestHandler rh = new RequestHandler();
String s = rh.sendGetRequestParam(konfigurasi.URL_DELETE_EMP, id);
return s;
}
}
DeleteMhs de = new DeleteMhs();
de.execute();
}
private void confirmDeleteMhs(){
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
alertDialogBuilder.setMessage("Apakah kamu yakin ingin menghapus data ini ?");
alertDialogBuilder.setPositiveButton("Ya", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
deleteMhs();
startActivity(new Intent(TampilMhs.this, TampilSemuaMhs.class));
}
});
alertDialogBuilder.setNegativeButton("Tidak", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
}
});
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
}
@Override
public void onClick (View v){
if (v==buttonUpdate){
updateMhs();
}
if (v==buttonDelete){
confirmDeleteMhs();
}
}
}
- Selanjutnya silahkan buat class baru dengan nama konfigurasi.java. Klik kanan pada direkori nama package, caranya Pilih New > Java Class
- Lalu tambahkan kode-kode berikut dibawah ini
package com.example.tugas13;
public class konfigurasi {
public static final String URL_ADD = "http://android.unggasid.com/mhs/tambahMhs.php";
public static final String URL_GET_ALL = "http://android.unggasid.com/mhs/tampilSemuaMhs.php";
public static final String URL_GET_EMP = "http://android.unggasid.com/mhs/tampilMhs.php?id=";
public static final String URL_UPDATE_EMP = "http://android.unggasid.com/mhs/updateMhs.php";
public static final String URL_DELETE_EMP = "http://android.unggasid.com/mhs/hapusMhs.php?id=";
public static final String KEY_MHS_ID = "id";
public static final String KEY_MHS_NAMA = "name";
public static final String KEY_MHS_NRP = "nrp";
public static final String KEY_MHS_KELAS = "kelas";
public static final String KEY_MHS_BLOG = "blog";
public static final String TAG_JSON_ARRAY = "result";
public static final String TAG_ID = "id";
public static final String TAG_NAMA = "name";
public static final String TAG_NRP = "nrp";
public static final String TAG_KELAS = "kelas";
public static final String TAG_BLOG = "blog";
public static final String MHS_ID = "mhs_id";
}
- Setalah itu buat class RequestHandler.java, caranya sama dengan yang diatas. Class ini berfungsi untuk menangani permintaan jaringan. Untuk codingannya sebagai berikut :
package com.example.tugas13;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;
import javax.net.ssl.HttpsURLConnection;
public class RequestHandler {
//metode yang digunakan mengirim httpPostRequest
public String sendPostRequest (String requestURL, HashMap<String,String>postDataParams){
URL url;
StringBuilder sb = new StringBuilder();
try{
url = new URL(requestURL);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(15000);
conn.setConnectTimeout(15000);
conn.setRequestMethod("POST");
conn.setDoInput(true);
conn.setDoOutput(true);
OutputStream os = conn.getOutputStream();
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os,"UTF-8"));
writer.write(getPostDataString(postDataParams));
writer.flush();
writer.close();
os.close();
int responseCode = conn.getResponseCode();
if(responseCode== HttpsURLConnection.HTTP_OK){
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
sb = new StringBuilder();
String response;
while ((response = br.readLine())!= null){
sb.append(response);
}
}
}
catch (Exception e){
e.printStackTrace();
}
return sb.toString();
}
public String sendGetRequest(String requestURL){
StringBuilder sb = new StringBuilder();
try {
URL url = new URL(requestURL);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(con.getInputStream()));
String s;
while((s=bufferedReader.readLine())!=null){
sb.append(s+"\n");
}
}
catch (Exception e){
}
return sb.toString();
}
public String sendGetRequestParam (String requestURL, String id){
StringBuilder sb = new StringBuilder();
try{
URL url = new URL(requestURL+id);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(con.getInputStream()));
String s;
while ((s=bufferedReader.readLine())!=null){
sb.append(s+"\n");
}
}
catch (Exception e ){ }
return sb.toString();
}
private String getPostDataString (HashMap<String,String>params) throws UnsupportedEncodingException {
StringBuilder result = new StringBuilder();
boolean first = true;
for (Map.Entry<String,String> entry : params.entrySet()){
if(first)
first = false;
else
result.append("&");
result.append(URLEncoder.encode(entry.getKey(),"UTF-8"));
result.append("=");
result.append(URLEncoder.encode(entry.getValue(),"UTF-8"));
}
return result.toString();
}
}
- Terakhir Atur AndroidManifest.xml nya menjadi seperti berikut ini :
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.tugas13">
//cuman nambah ini doang, izinin akses internet
<uses-permission android:name="android.permission.INTERNET"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
//sama nambahin ini, cleartext
android:usesCleartextTraffic="true"
android:supportsRtl="true"
android:theme="@style/Theme.Tugas13">
<activity android:name=".TampilMhs"></activity>
<activity android:name=".ListView" />
<activity android:name=".TampilSemuaMhs" />
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
- Sekarang coba jalankan dengan menggunakan Emulator yang ada pada Android Studio atau menggunakan Pisical Drive android anda, tampilan dari program yang kita buat diatas tampak seperti vidio dibawah ini
- Setelah itu cek apakah data yang kalian masukan sudah tersimpan di database server atau belum dengan cara buka browser dan ketikan link http://android.unggasid.com/mhs/
di browser kalian. Seperti gambar dibawah ini :
Tidak ada komentar:
Posting Komentar