【发布时间】:2016-08-24 06:24:40
【问题描述】:
我想显示toast 消息,但Toast.makeText((getContext()," Message" , Toat.LENGTH_LONG.show())) 中的getContext() 出现错误
无法解析方法。
问题是我想在哪个类中显示Toast 消息不是MainActivity 类。这是AsyncTask 类。我可以在其他类(MainActivity 类除外)中显示Toast 消息作为上述问题吗?
导入android.os.AsyncTask; 导入android.widget.Toast;
public class myClass extends AsyncTask<String, String, String> {
public myClass(double a, double b,Context context ) {
this.a = a;
this.b=b;
this.context = context;
}
protected String doInBackground(String... params) {
return null;
}
protected void onPostExecute(String result) {
Toast.makeText((getApplicationContext(), "Message", Toast.LENGTH_LONG).show();
}
}
编辑
我创建了构造函数(参见上面的代码),但在MainActivity 类中我以这种方式调用myClassObj = new myClass(a, b,this); 但给出错误
myClass 中的 myClas() 不能应用于: 预期 实际 参数 参数 a:双a b:双b 上下文:android.content.Context this(anonymous...view.View.OnClickListener)
编辑3
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
public class MainActivity extends AppCompatActivity {
myClass Object;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
double age = 16;
double number = 33;
Object = new myClass(age,number,this);
}
});
}
}
二等。
import android.content.Context;
import android.os.AsyncTask;
import android.widget.Toast;
public class myClass extends AsyncTask<String, String, String> {
Context context;
double a;
double b;
public myClass(double a, double b,Context context ) {
this.a = a;
this.b=b;
this.context = context;
}
protected String doInBackground(String... params) {
return null;
}
protected void onPostExecute(String result) {
Toast.makeText((context), "Message", Toast.LENGTH_LONG).show();
}
}
【问题讨论】:
-
请出示
AsyncTask代码 -
如果你试图在 doInBackground() 方法中显示 toast,那么你不能。将你的 toast 移动到 pre 或 postExecute() 方法
-
@VivekMishra 是的,我在
onPostExecute()中展示它。但同样的错误。 -
从您开始异步任务的活动中传递上下文
-
@Logic 问题已编辑。
标签: android toast android-toast