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 :(得分:1)
您班上需要$analytics = new Google_Service_Analytics($client);
。
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();
答案 1 :(得分:0)
Snackbar.make()
的第一个参数是您需要显示小吃店的布局。通常每个人都使用活动或片段的父布局,例如在屏幕底部显示小吃栏。
您应该做的是创建一个屏幕的父布局对象,在该对象中显示小吃栏并将其作为第一个参数提供。
答案 2 :(得分: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位于不同的文件上,您可能需要通过构造函数传递视图。在这种情况下,您不需要通过构造函数传递它。