Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从asynktask在android活动中添加snackbar_Java_Android_Android Activity_Android Asynctask - Fatal编程技术网

Java 从asynktask在android活动中添加snackbar

Java 从asynktask在android活动中添加snackbar,java,android,android-activity,android-asynctask,Java,Android,Android Activity,Android Asynctask,从主要活动中,我称之为后台进程。在这个背景中有一个onprexecute方法,在else部分中有一个if-else条件,我需要添加一个Snackbar 显示基本SnackBar的代码段如下所示: Snackbar snackbar = Snackbar .make(coordinatorLayout, "www.journaldev.com", Snackbar.LENGTH_LONG); snackbar.show(); 在上述代码段中,make方法接受三个参数: coord

从主要活动中,我称之为后台进程。在这个背景中有一个onprexecute方法,在else部分中有一个if-else条件,我需要添加一个Snackbar


显示基本SnackBar的代码段如下所示:

Snackbar snackbar = Snackbar
        .make(coordinatorLayout, "www.journaldev.com", Snackbar.LENGTH_LONG);
snackbar.show();
在上述代码段中,make方法接受三个参数:

coordinatorLayout:它是活动的根布局

www.journaldev.com:这是将出现在snackbar上的消息,我们可以使用自己的消息对其进行定制

Snackbar.LENGH_LONG:这是最后一个参数,它是显示Snackbar的时间限制

show方法用于在屏幕上显示SnackBar

这对您有帮助吗?

此Snackbar.makethis.findviewbyandroid.R.id.content、Message、Snackbar.LENGTH\u LONG.show

这是行不通的。findViewById是活动类而不是AsyncTask的方法

将接口用作回调

interface Callback {

public void showSnackBar();
}
在异步任务中

private Callback callback;
然后

然后在OnPreecute

 else {
     if(callback!=null)
      callback.showSnackbar();

    }
在活动类中实现接口和方法

public YourActivity extends AppCompatActivity implements Callback {
然后


您还可以使用一些事件总线机制,而不是上述机制。

如果您没有传递上下文,请使用活动在该上下文中查找视图,因为您在异步类中,您无权访问活动视图

 Snackbar.make(MainActivity.this.findViewById(android.R.id.content), "Message", Snackbar.LENGTH_LONG).show();

然后添加它,问题是什么?在这个.findviewbyandroid.R.id.content中,它显示findViewById无法解析方法findviewbydint这是正确的,因为AsyncTask没有这样的方法。例如,您需要以与上下文相同的方式在构造函数参数中传递视图,并在Snackbar中使用它。您能告诉如何传递它background Context ctx{->background Context ctx,View View View吗{.然后将视图存储到一个字段中,并传入Snackbar:Snackbar.makeview,Message,Snackbar.LENGTH\u LONG.show;这是一个重复的问题。[这里]我的gradle已经编译了'com.android.support:design:25.2.0'现在仍然显示SameCoull你可以试试这个文档也许它可以帮助你检查失败的地方。另外@raghundandan的答案似乎解释得很好。MainActivity不是一个封闭类使用适当的活动或片段在你的id内容视图所在的地方。我需要它在主活动中,它是一个proper activity因此,在主activity layout.xml文件中应该有一个包含id内容的视图,如果没有得到,请在此处添加xml代码。
public YourActivity extends AppCompatActivity implements Callback {
@Override
public void showSnackBar()
{
  // show snack bar in activity
}
 Snackbar.make(MainActivity.this.findViewById(android.R.id.content), "Message", Snackbar.LENGTH_LONG).show();