2015-11-08 63 views
-1

我有一個外部類,我想在此類中使用Toast。 我試圖實現這一點,但我得到一個錯誤。在外部類中調用Toast

如何以簡單的方式做到這一點沒有任何錯誤?

public class ElevenActivity extends AppCompatActivity { 
    @ 
    Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_eleven); 
    } 

    public class MyToast { 
    public MyToast(String message) { 
     Toast.makeText(ElevenActivity.this, message, Toast.LENGTH_SHORT).show(); 
    } 
    } 
} 

public class externalClass extends SQLiteOpenHelper { 
    public void CreateDB() { 
    ElevenActivity.MyToast t = new ElevenActivity.MyToast("Here"); 
    } 
} 
+1

你得到什麼錯誤?請將其添加到問題 – andorov

+0

感謝您的幫助,我通過將上下文傳遞到外部類來解決問題 –

回答

0

只需使用getApplicationContext()在外部類中做一個Toast即可。像,

public class externalClass extends SQLiteOpenHelper { 

    public void CreateDB() { 

    Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show(); 
    } 
} 
+0

我試過這個,但我也有錯誤,但我解決了謝謝:) –

0

如果要提供這應該是適用於不同的情況下(例如活動)的方法,通過這方面的參數。

public static void textToast(String textToDisplay, Context context) { ... } 

如果你想調用從嵌套內部類這種方法(這是常有的情況),則可以使用此作爲上下文

public void textToast(String textToDisplay) { 
    ... 
    Toast toast = Toast.makeText(OuterClass.this, text, duration); 
    ... 
} 

(或在外部類中實現textToast並調用它通過OuterClass.this.textToast從嵌套的內部類) ..........

+0

感謝分享另一種方法來實現這種情況 –