首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Android Toast 用法詳解:靜態工廠方法與初始化時機

     編輯:程式設計疑難解答

現象

見到 `Toast toast = Toast.makeText(...)` 有返回值感到驚訝;嘗試 `private Toast toast = new Toast(this)` 導致啟動崩潰。

解析

  1. `Toast.makeText(Context, CharSequence, int)` 是**靜態工廠方法**,返回構建好的 `Toast` 實例,**必須調用 `.show()` 才會顯示**。常用鏈式:`Toast.makeText(...).show();`。
  2. `new Toast(Context)` 構造函數**不接受 Context 參數**(實為 `Toast(Context)` 但需手動設置 View),且**在 Activity 構造器/字段初始化時調用**,`this`(Context)尚未完全準備好(`onCreate` 前),導致崩潰。

正確用法

// 方式一:一次性顯示
Toast.makeText(this, "訊息", Toast.LENGTH_SHORT).show();

// 方式二:需保持引用控制顯示/取消
private Toast mToast;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mToast = Toast.makeText(this, "", Toast.LENGTH_SHORT); // 在 onCreate 中初始化
}
void showMsg(String msg) {
    mToast.setText(msg);
    mToast.show();
}

核心原則

**不要在字段初始化或構造器中使用 `this` 作為 Context 創建 UI 相關物件**,需在 `onCreate`/`onStart` 等生命週期方法中執行。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved