在下面的代碼中,我可以寫什麼來代替Play.this,以便它可以自動使用它所使用的類的名稱,而無需寫入名稱(在本例中爲「播放」)AlertDialog.Builder builder = new AlertDialog.Builder(Play.this);
如何自動使用班級名稱?
回答
設置上下文(此處)前還有其他事情需要考慮。
第一種情況 - 如果你是在擴展其基礎樣活性/服務上下文中的某一類,你是不在一個內部類,你可以用「這個」
二 - 如果你在一個擴展基類的上下文的類中,比如Activity/Services,並且你在一個內部類中,你可以使用(Play.this),因爲在這種情況下,「this」是關於內部類的。
三 - 如果你是在另一個類不具有一個背景下,你可以通過它在構造函數或方法,如:
class Test {
public void createBuilder(Context context) {
AlertDialog.Builder builder = new AlertDialog.Builder(context);
}
}
沒有理由在Play
類的代碼中使用Play.this
。只需使用this
:
AlertDialog.Builder builder = new AlertDialog.Builder(this);
但是,如果你想要做的是從你的內部類,那麼你需要this
不會指向Context
子類,這樣你就可以即在父類的創建成員,即:
Context mContext;
初始化它在IE onCreate()
:
mContext= this;
,並使用mContext
從聽衆的代碼
AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
如果這是在'new View.OnClickListener'內,那麼,是的,你需要'Play。這個' –
再次閱讀'代碼是Play類的一部分'。你談論內心階層。這是不同的 –
內部類是「另一類的一部分」,IMO :) –
我認爲你要找的是this.getClass().getName()
。如果您只需要非限定名稱,請改爲使用this.getClass().getSimpleName()
。我對Android很少了解,但這就是通常在Java中這樣做的方式。
- 1. 從班級名稱
- 2. 班級體內班級的Python名稱
- 3. Yii2從名稱動態加載班級
- 4. JavaScript - 獲得班級名稱
- 5. 選擇班級名稱值
- 6. 曖昧的班級名稱
- 7. NLog。更改班級名稱
- 8. 獲取班級名稱(KendoUI)
- 9. 如何在班級內使用班級?
- 10. 如何訪問自己班級的名稱作爲字符串的名稱
- 11. 如何在自己的班級中獲得蜘蛛名稱?
- 12. 自動點擊同一班級名稱中的一個元素
- 13. 如何使用jquery keypress事件來隱藏匹配或啓動班級名稱
- 14. 如何使用PSR-4自動加載班級?
- 15. Kryo自動班級註冊
- 16. Gtest:預期的班級名稱之前'{'
- 17. 流利Nhibernate沒有Persistor班級名稱
- 18. CSS懸停不接受班級名稱
- 19. 從div取得班級名稱
- 20. jQuery:以前的班級名稱兒童
- 21. 更改Mongoid班級名稱中產
- 22. 參考父母的班級方法,不用父母的班級名稱
- 23. 帶班級名單的班級
- 24. 如何記錄兩個班級使用的總體班級
- 25. 如何檢查所有班級或使用班級?
- 26. 無法使用VBA從班級名稱中刪除表格
- 27. 在班級名稱中使用下劃線
- 28. 使用其他班級的班級
- 29. 如何在另一個班級內使用CSS樣式一個班級但不影響主班級班級
- 30. TestNG - 如何從BeforeClass獲取當前班級名稱
你能不能給多一點上下文到這似乎? 「這個班」是什麼意思? – tadman
我試過使用: 'AlertDialog.Builder builder = new AlertDialog.Builder(this.getClass()。this)'但它沒有工作 –
這沒有任何意義......你需要一個'Context'變量,而不是' Class'。和'getClass()。這個'不能編譯 –