public class MyTask extends AsyncTask<Void, Integer, String> {
@Override
protected void onPostExecute(String result) {
textView.setText(result);
button.setEnabled(true);
progressDialog.hide();
Snackbar snackbar;
snackbar = Snackbar.make(/*what would i use here*/,"Download Complete", Snackbar.LENGTH_LONG);
snackbar.show();
}
}
0
A
回答
0
Snackbar.make()
的第一個參數是您需要顯示快餐欄的佈局。通常,每個人都使用活動或片段的父級佈局,例如在屏幕底部顯示快餐欄。
您應該做的是創建一個屏幕的父佈局的對象,在該對象中要顯示快餐欄並將其作爲第一個參數提供。
+1
他想知道如何得到它。實際上,我在答案中提供了它。 – creativecreatorormaybenot
0
你需要一個rootView
在你的課堂上。
private View rootView;
您將此rootView
作爲參數傳遞給您的構造函數。
public MyTask(View rootView) {
this.rootView = rootView;
}
在您電話的活動,你需要傳遞一個rootView
。這可以是任何View
,它通常被稱爲rootView
的片段,否則您只需放置您的父級佈局。
new AsyncTask(rootView).execute(); // execute() for starting your AsyncTask
然後在你的postExecute()
您可以使用rootView
這樣的:
Snackbar.make(rootView, "a text", Snackbar.LENGTH_LONG).show();
爲你的情況整個代碼:
public class MyTask extends AsyncTask<Void, Integer, String> {
private View rootView;
public MyTask(View rootView) {
this.rootView = rootView;
}
@Override
protected void onPostExecute(String result) {
textView.setText(result);
button.setEnabled(true);
progressDialog.hide();
Snackbar snackbar;
snackbar = Snackbar.make(rootView, "Download Complete", Snackbar.LENGTH_LONG);
snackbar.show();
}
}
0
首先,給一個ID,基地佈局。這裏是我的main_activity.xml
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/layoutxx"
tools:context="pzy64.aaa.MainActivity">
我把id作爲layoutxx
這是我MainActivity.java
public class MainActivity extends AppCompatActivity {
ConstraintLayout layout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
l = (ConstraintLayout)findViewById(R.id.layoutxx);
new Test().execute();
}
class Test extends AsyncTask<Void,Void,Void> {
@Override
protected Void doInBackground(Void... params) {
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
Snackbar.make(layout,"Hello",Snackbar.LENGTH_SHORT).show();
}
}
}
如果是的AsyncTask在不同的文件中,你可能需要通過構造函數傳遞視圖。在這種情況下,您不需要通過構造函數傳遞它。
相關問題
- 1. 的AsyncTask在OnPostExecute
- 2. 使用AsyncTask但無法使用onPostExecute方法更新視圖
- 3. 來自asynctask類的onPostExecute方法中的呼叫活動
- 4. AsyncTask中的onPostExecute方法的返回類型是否無效?
- 5. android AsyncTask - 無法執行onPostExecute方法
- 6. NPE在AsyncTask的OnPostExecute()
- 7. AsyncTask中的NullPointerException OnPostExecute
- 8. AsyncTask類中的onPostExecute()中的ProgressValue
- 9. 子類的AsyncTask的 - 未能在onPostExecute
- 10. 如何onpostexecute方法的AsyncTask的數據拆分成陣列
- 11. 錯誤在AsyncTask onPostExecute
- 12. 在AsyncTask中重寫onPostExecute()
- 13. IllegalStateException asynctask - onPostExecute
- 14. onPostExecute取消AsyncTask
- 15. 無法調用AsyncTask doInBackground()和onPostExecute
- 16. 進度中的AsyncTask - onPostExecute方法後,顯示
- 17. AsyncTask不會調用onPostExecute()
- 18. 從AsyncTask中onPostExecute更新textview
- 19. 錯誤是asynctask onPostExecute
- 20. AsyncTask - 如何在onPostExecute之後將值傳遞迴活動類?
- 21. NetworkOnMainThreadException當在AsyncTask類中調用方法
- 22. 內部類AsyncTask在周圍的Activity類中使用方法?
- 23. 我如何獲得響應onPostExecute()AsyncTask android
- 24. 的AsyncTask從不執行onPostExecute
- 25. AsyncTask何時onPostExecute()未被調用?
- 26. Asynctask onPostExecute在活動完成後調用
- 27. OnPostExecute未在AsyncTask(C#)中執行
- 28. 如何在Asynctask類中使用意圖?
- 29. public onPostExecute方法
- 30. 在Asyncktask中調用片段OnPostExecute方法
你可以在Snackbar.make中使用textview(textview,「Download Complete」,Snackbar.LENGTH_LONG); –
您必須添加視圖 http://www.androidhive.info/2015/09/android-material-design-snackbar-example/ http://www.truiton.com/2015/06/ android-snackbar-example/ –
一次向小吃店參數公開。 –