Buat satu project android, kemudian silakan pilih berkas activity_main.xml pada workspace Anda(res/layout/activity_main.xml), dan ikutin coding seperti di bawah :
<?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:padding="16dp"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/length" />
<EditText
android:id="@+id/edt_length"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="numberDecimal"
android:lines="1" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/width" />
<EditText
android:id="@+id/edt_width"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="numberDecimal"
android:lines="1" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/height" />
<EditText
android:id="@+id/edt_height"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="numberDecimal"
android:lines="1" />
<Button
android:id="@+id/btn_calculate"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/calculate" />
<TextView
android:id="@+id/tv_result"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="@string/result"
android:textSize="24sp"
android:textStyle="bold" />
</LinearLayout>
Penjelasan code di atas :
Layout yang digunakan adalah LinearLayout.
TextView wajib menambahkan attribut id untuk memanipulasi data dan attribut text wajib dimasukan ke berkas res/values/strings.xml atau tekan Alt+Enter pada bagian tanda warning yang muncul di attribut text dan dan extract string resource, isi sesuai dengan data dan akan otomatis masuk ke strings.xml
Selanjutnya setelah selesai, lanjutkan dengan membuka berkas MainActivity dan lanjutkan ngoding baris-baris di bawah ini :
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private EditText edtWidth, edtHeight, edtLength;
private Button btnCalculate;
private TextView tvResult;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
edtWidth = findViewById(R.id.edt_width);
edtHeight = findViewById(R.id.edt_height);
edtLength = findViewById(R.id.edt_length);
btnCalculate = findViewById(R.id.btn_calculate);
tvResult = findViewById(R.id.tv_result);
btnCalculate.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if (v.getId() == R.id.btn_calculate) {
String inputLength = edtLength.getText().toString().trim();
String inputWidth = edtWidth.getText().toString().trim();
String inputHeight = edtHeight.getText().toString().trim();
boolean isEmptyFields = false;
if (TextUtils.isEmpty(inputLength)) {
isEmptyFields = true;
edtLength.setError("Field ini tidak boleh kosong");
}
if (TextUtils.isEmpty(inputWidth)) {
isEmptyFields = true;
edtWidth.setError("Field ini tidak boleh kosong");
}
if (TextUtils.isEmpty(inputHeight)) {
isEmptyFields = true;
edtHeight.setError("Field ini tidak boleh kosong");
}
if (!isEmptyFields) {
double volume = Double.valueOf(inputLength) * Double.valueOf(inputWidth) * Double.valueOf(inputHeight);
tvResult.setText(String.valueOf(volume));
}
}
}
}
Penjelasan code di atas :
Pertama elemen kosong harus di declare-kan terlebih dahulu.
Kemudian set element dengan textView pada event onCreate dan memberikan perintah untuk action pada button.
Lalu buat event Onclick untuk melakukan perintah, dengan urutan pengambilan data, pengecekan data jika kosong dan memproses data lalu menampilkan pada textView.
untuk mengatasi data hilang ketika perubahan orientasi tambahkan script ini :
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
private EditText edtWidth;
private EditText edtHeight;
private EditText edtLength;
private Button btnCalculate;
private TextView tvResult;
private static final String STATE_RESULT = "state_result";
@Override
protected void onCreate(Bundle savedInstanceState) {
...
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString(STATE_RESULT, tvResult.getText().toString());
}
...
}
Dan tambahkan juga di dalam onCreate
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
...
if (savedInstanceState != null) {
String result = savedInstanceState.getString(STATE_RESULT);
tvResult.setText(result);
}
}
*Update Android Studio 4.1
Selamat mencoba, terima kasih