Mình mới học Java/Android có làm demo app chuyển đổi các giá trị đo lường,mới làm được với nhiệt độ thì có lỗi xử lý event button,đây là code ở layout và activity của mình :
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/rlPanel"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ff008200"
tools:context=".MainActivity">
<TextView
android:id="@+id/tvTempPanel"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Convert Temperature"
android:gravity="center"
android:textSize="36dp"
android:layout_marginTop="30dp"
android:layout_marginBottom="30dp"/>
<EditText
android:id="@+id/etTemp"
android:layout_below="@+id/tvTempPanel"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="number"
android:text=""
android:gravity="center_horizontal"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:textColorHint="#ffff8d75"/>
<RadioGroup
android:id="@+id/radioGroup"
android:layout_below="@+id/etTemp"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:orientation="vertical">
<RadioButton
android:id="@+id/rbtnF"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Fehrenheit to Celcius"/>
<RadioButton
android:id="@+id/rbtnC"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Celcius to Fehrenheit"/>
</RadioGroup>
<LinearLayout
android:id="@+id/layout2Temp"
android:layout_below="@+id/radioGroup"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:layout_marginTop="30dp"
android:layout_marginBottom="30dp"
android:orientation="horizontal">
<Button
android:id="@+id/btnConvert"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Convert"/>
<Button
android:id="@+id/btnClear"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Clear"/>
</LinearLayout>
<TextView
android:id="@+id/tvTempResult"
android:layout_below="@+id/layout2Temp"
android:layout_marginTop="30dp"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text=""
android:gravity="center"
android:textSize="24dp"/>
</RelativeLayout>
và activity :
package com.example.legend.myapplication;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends ActionBarActivity {
private Button btnConvert,btnClear;
private EditText etTemp;
private RadioButton tempF,tempC;
private TextView tvTempResult;
private View.OnClickListener myVarListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
if(v==btnConvert){
if(etTemp.getText()!=null){
if(tempF.isChecked()){
float f=Float.parseFloat(etTemp.getText().toString());
float c=(f-32)*(float)5/9;
tvTempResult.setText(String.valueOf(f) +" Fehrenheit = "+String.valueOf(c)+ " Celcius");
}
else if(tempC.isChecked()){
float c=Float.parseFloat(etTemp.getText().toString());
float f=c*(float)9/5 +32;
tvTempResult.setText(String.valueOf(c) +" Celcius = "+String.valueOf(f)+ " Fehrenheit");
}
else {
Toast.makeText(MainActivity.this,"Please mark an unit",Toast.LENGTH_LONG).show();
}
}else {
Toast.makeText(MainActivity.this,"Please input data",Toast.LENGTH_LONG).show();
}
}else{
etTemp.setText("");
etTemp.requestFocus();
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnConvert=(Button)findViewById(R.id.btnConvert);
btnClear=(Button)findViewById(R.id.btnClear);
etTemp=(EditText)findViewById(R.id.etTemp);
tempF=(RadioButton)findViewById(R.id.rbtnF);
tempC=(RadioButton)findViewById(R.id.rbtnC);
tvTempResult=(TextView)findViewById(R.id.tvTempResult);
btnConvert.setOnClickListener(myVarListener);
btnClear.setOnClickListener(myVarListener);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
nếu như để ở editText null và mark vào 1 radio button thì có lỗi xảy ra,mình nghĩ là nó ko thực thi được ở lệnh else(etTemp.getText()==null) nhưng không biết xử lý sao cả,mong mọi người chỉ giúp.


83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?