2017-04-20 122 views
0
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

你可以在Snackbar.make中使用textview(textview,「Download Complete」,Snackbar.LENGTH_LONG); –

+0

您必須添加視圖 http://www.androidhive.info/2015/09/android-material-design-snackbar-example/ http://www.truiton.com/2015/06/ android-snackbar-example/ –

+0

一次向小吃店參數公開。 –

回答

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在不同的文件中,你可能需要通過構造函數傳遞視圖。在這種情況下,您不需要通過構造函數傳遞它。

相關問題