今天來介紹Intent,ok我們直接開始:))
在 Android 開發中,它扮演著不同元件之間溝通橋樑的角色。把它想像成一位訊息傳遞者,負責在不同的Activity或元件之間傳遞請求與資料。最常見的場景就是使用者登入後,畫面會從登入頁面跳轉到應用程式的主頁。這整個流程就是由 Intent 來驅動,它帶著「開啟主頁面」的指令,觸發頁面的切換
為了讓兩個Activity能夠溝通,要使用Intent來啟動目標 Activity,並透過其"Extra"附加資料
putExtra(String name, value)
startActivity(Intent intent)
finish()
getIntent()
方法取得啟動Intent,然後使用get...Extra()
將資料取出來透過簡單的BMI 計算機應用程式,帶你了解如何使用 Intent,這範例會用到兩個Activity:
MainActivity:使用者輸入身高和體重
ResultActivity:顯示計算出來的 BMI 結果
我們先建立ResultActivity,顯示計算結果的頁面
<EditText
android:id="@+id/height_main_et"
android:layout_width="0dp"
android:layout_height="0dp"
android:hint="身高(m)"
android:inputType="numberDecimal" />
<EditText
android:id="@+id/weight_main_et"
android:layout_width="0dp"
android:layout_height="0dp"
android:hint="體重(Kg)"
android:inputType="numberDecimal" />
<Button
android:id="@+id/result_main_btn"
android:layout_width="0dp"
android:layout_height="0dp"
android:gravity="center"
android:text="計算" />
<!--動動小手設計.w. -->
public class MainActivity extends AppCompatActivity {
private Button resultButton;
private EditText heightEditText;
private EditText weightEditText;
public static final String bmiResultPutExtra = "bmiResult";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
resultButton = findViewById(R.id.result_main_btn);
heightEditText = findViewById(R.id.height_main_et);
weightEditText = findViewById(R.id.weight_main_et);
resultButton.setOnClickListener(v -> {
String heightStr = heightEditText.getText().toString();
String weightStr = weightEditText.getText().toString();
if (TextUtils.isEmpty(heightStr) || TextUtils.isEmpty(weightStr)) {
Toast.makeText(this, "身高和體重不能為空!", Toast.LENGTH_SHORT).show();
return;
}
float height = Float.parseFloat(heightStr);
float weight = Float.parseFloat(weightStr);
if (height <= 0) {
Toast.makeText(this, "身高必須大於 0!", Toast.LENGTH_SHORT).show();
return;
}
float bmi = weight / (height * height);
Intent intent = new Intent(this, ResultActivity.class);
intent.putExtra(bmiResultPutExtra, bmi);
startActivity(intent);
});
}
}
<TextView
android:id="@+id/result_result_tv"
android:layout_width="0dp"
android:layout_height="0dp"
android:textSize="30sp"
android:layout_gravity="center"
android:text="結果"
android:gravity="center"/>
<Button
android:id="@+id/back_result_btn"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_gravity="center"
android:text="計算完成回到上一頁" />
public class ResultActivity extends AppCompatActivity {
@SuppressLint("DefaultLocale")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_result);
Button backButton = findViewById(R.id.back_result_btn);
TextView resultTextView = findViewById(R.id.result_result_tv);
float bmi = getIntent().getFloatExtra(MainActivity.bmiResultPutExtra,0.0f);
resultTextView.setText(String.format("%.2f", bmi));
backButton.setOnClickListener(v -> finish());
}
}
Intent就先介紹到這,希望大家都了解了,明天會來介紹Spinner,明天見( σ՞ਊ ՞)σ