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();
}
}
Antwort
Das erste Argument zu Snackbar.make()
ist das Layout, in dem Sie die Snackbar anzeigen müssen. Normalerweise verwendet jeder das übergeordnete Layout der Aktivität oder des Fragments, um beispielsweise die Snackbar am unteren Bildschirmrand anzuzeigen.
Was Sie tun sollten, ist ein Objekt des übergeordneten Layouts des Bildschirms zu erstellen, in dem Sie die Snackbar anzeigen und als erstes Argument angeben möchten.
Er wollte wissen, wie man es bekommt. Ich habe es tatsächlich in meiner Antwort angegeben. – creativecreatorormaybenot
Sie benötigen eine rootView
in Ihrer Klasse.
private View rootView;
Sie übergeben diese rootView
als Argument in Ihrem Konstruktor.
public MyTask(View rootView) {
this.rootView = rootView;
}
In Ihrer Telefon Aktivität benötigen Sie einen rootView
passieren. Dies kann eine beliebige sein View
, in einem Fragment wird es normalerweise bereits rootView
genannt und sonst würden Sie einfach Ihr Eltern-Layout setzen.
new AsyncTask(rootView).execute(); // execute() for starting your AsyncTask
Dann in Ihrem postExecute()
können Sie verwenden, dass rootView
wie folgt aus:
Snackbar.make(rootView, "a text", Snackbar.LENGTH_LONG).show();
Whole-Code für Ihren Fall:
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();
}
}
Erstens eine ID mit der Basis-Layout geben. Hier ist meine 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">
gab ich die ID als layoutxx
Das ist mein 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();
}
}
}
Wenn AsyncTask auf einer anderen Datei, die Sie benötigen um die Ansicht durch den Konstruktor zu übergeben. In diesem Fall müssen Sie den Konstruktor nicht übergeben.
- 1. Wie ändere ich die Hintergrundfarbe der Snackbar?
- 2. Wie verwende ich QuerySelectField in der Flasche?
- 3. Wie verwende ich DDD in der Praxis?
- 4. Wie verwende ich TabLayout in der Toolbar?
- 5. Wie verwende ich Debug.Trace.trace in der Statusmonade?
- 6. Wie verwende ich "Enthalten" in der Liste?
- 7. Wie verwende ich QGraphicsScene in der Konsolenanwendung?
- 8. Anzeigen der Snackbar aus der Dienstprogrammklasse
- 9. Testen der Snackbar mit Espresso
- 10. In Verilog, wie verwende ich eine Variable in der Logik
- 11. Wie verwende ich Anführungszeichen in der Echo-Funktion in PHP?
- 12. Wie verwende ich umgekehrtes Vorzeichen in der Bedingung in DataProvider?
- 13. Ändern Sie die Hintergrundfarbe der Aktion Schaltfläche in Snackbar
- 14. Wie verwende ich Cygwin hinter der Unternehmensfirewall
- 15. Android-Snackbar über der Tastatur anzeigen?
- 16. Wie verwende ich SearchManager in der lokalen App?
- 17. Wie verwende ich den Lambda-Ausdruck in der jrxml-Datei?
- 18. Wie verwende ich eine Variable außerhalb der Funktion in PHP?
- 19. Wie verwende ich mysqlconnection in der gesamten Anwendung
- 20. Wie verwende ich die Näherung der kleinsten Quadrate in MATLAB?
- 21. Wie verwende ich die reaktiven Komponenten in der nativen App?
- 22. Wie verwende ich "if-else" in der RX-Java-Kette?
- 23. Wie verwende ich die Dateneinstellung in der KomponenteWillMount?
- 24. Wie verwende ich Lambda in der Emacs-Lisp-Sprache richtig?
- 25. Wie verwende ich LDAP in der PHP Bluemix App?
- 26. Wie verwende ich die Mitgliedschaftsmethoden in der Datenbankebene?
- 27. Wie verwende ich den Fall in der gespeicherten Prozedur?
- 28. Wie verwende ich DirectedSparseVertex() in der Jung-Bibliothek?
- 29. Wie verwende ich fb connect in der Android App?
- 30. Wie verwende ich anforderungsspezifische Informationen in der attributbasierten MVC-Autorisierung?
können Sie Textview in Snackbar.make verwenden (Textansicht, "Download Complete", Snackbar.LENGTH_LONG); –
Sie müssen die Ansicht hinzufügen http://www.androidhive.info/2015/09/android-material-design-snackbar-example/ http://www.truiton.com/2015/06/ android-snackbar-example/ –
Einmal im Snackbar Parameter veröffentlichen. –