【问题标题】:getContext () , getApplicationContext(), getBaseContext are not working in AndroidgetContext () 、 getApplicationContext() 、 getBaseContext 在 Android 中不起作用
【发布时间】: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


【解决方案1】:

当您使用this 时,它指的是封闭类。在您的情况下,这是View.OnClickListener。但是您需要传递 Activity 的上下文。

所以你需要这样称呼它,

Object = new myClass(age,number, MainActivity.this);

【讨论】:

  • @K 。 WTH。 Android 太混乱了。
  • @user6750923 ,那是纯 JAVA .. this 指的是它所调用的 wic 中的类。如果你实例化一个匿名类,如果你通过这个,它会引用那个匿名类
【解决方案2】:

你可以使用ApplicationClass.getinstance().getApplicationContext();

【讨论】:

  • 什么是ApplicationClass
【解决方案3】:

编辑 3

在您的 MainActivity 中执行此操作:

Object = new myClass(age,number,MainActivity.this);

并在您的 myClass 中执行此操作

Toast.makeText(context, "Message", Toast.LENGTH_LONG).show();

编辑 2

 class MyClass extends AsyncTask<Void, Void, Void> {

  int SPLASH_SHOW_TIME=3000;

  Context context;

       public MyClass(Context context ) {
        this.context = context;
    }
@Override
protected void onPreExecute() {
    super.onPreExecute();
}

@Override
protected Void doInBackground(Void... arg0) {
    try {
        Thread.sleep(SPLASH_SHOW_TIME);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    return null;
}

@Override
protected void onPostExecute(Void result) {
    super.onPostExecute(result);
    Toast.makeText(context, "Created a server socket",Toast.LENGTH_LONG).show(); 

}

}

【讨论】:

  • 我发送contextMainActivityclass怎么样?
  • 你想在哪里使用这个类然后将该类作为上下文
猜你喜欢
  • 2012-05-25
  • 2021-12-29
  • 1970-01-01
  • 1970-01-01
  • 2020-10-14
  • 2014-05-25
  • 2012-05-07
  • 2017-07-24
  • 1970-01-01
相关资源
最近更新 更多