2

AsyncTaskクラスがあります。エラーが発生したときは、トーストメッセージを見たいです。これは私のAsynTaskクラスです:

private GetUtenti threadutenti;
threadutenti= (GetUtenti) new GetUtenti(this.getActivity()).execute();

これは私のクラスです:

class GetUtenti extends AsyncTask<Void, Void, Void> {
    private Context context;
    private boolean errore = false; 
    private Database db;

    public GetUtenti(Context context){
        this.context=context;
    }
    @Override
    protected void onPostExecute(Void result) {
        db.disconnetti();
        if (errore) {
             Toast.makeText(context, "error!", Toast.LENGTH_SHORT)
              toast.show();
        }
        else{
            setListaUtenti();
        }
        bProgresso.dismiss();           
    }
    @Override
    protected void onPreExecute() {
        db = new Database(.....);
    }
    @Override
    protected Void doInBackground(Void... params) {
        db.connetti();
        if(!db.isConnesso()){           
            errore= true;               
        } else {
            utenti.clear();
            utenti = Utente.getUtenti(db);              
        }
    return null;
    }
}

トーストメッセージを見たいときはこれがあります:

03-04 17:41:06.534: E/AndroidRuntime(13622): FATAL EXCEPTION: main
03-04 17:41:06.534: E/AndroidRuntime(13622): java.lang.RuntimeException: This Toast was not created with Toast.makeText()
03-04 17:41:06.534: E/AndroidRuntime(13622):    at android.widget.Toast.setText(Toast.java:282)
03-04 17:41:06.534: E/AndroidRuntime(13622):    at com.unipg.utente.ListUtente$GetUtenti.onPostExecute(ListUtente.java:145)

なぜ?

4

2 に答える 2

5

次のようなものを試してください:

if (errore) {
    Toast toast = Toast.makeText(context, "error!", Toast.LENGTH_SHORT);
    toast.show();
}
于 2013-03-04T17:05:59.357 に答える
3

この行のエラー

 Toast.makeText(context, "error!", Toast.LENGTH_SHORT)  no semicolon

ダブルステップを使用する必要はありません。つまり、トーストオブジェクトで参照してから表示します。このように直接呼び出すことができます

 Toast.makeText(context, "error!", Toast.LENGTH_SHORT).show();
于 2013-03-04T17:09:40.270 に答える