【问题标题】:cannot resolve symbol on calling an android class outside of MainActivity在 MainActivity 之外调用 android 类时无法解析符号
【发布时间】:2017-09-24 16:00:36
【问题描述】:

我想拆分我的 downloadTask 类并创建了一个新的类文件,但是当我尝试在 MainAcvtivity 中调用该类时,我得到 Cannot resolve downloadTask();

public class downloadTask extends AsyncTask <String ,Void,String>{

public String desURL;
public String Date;
Context context;
private downloadTask(String desURL, String Date,Context context){

    this.desURL = desURL;
    this.Date = Date;
    this.context = context;

}

@Override
protected void onPreExecute() {
    super.onPreExecute();

    //this method will be running on UI thread

}

@Override
protected String doInBackground(String... args){

}


@Override
protected void onPostExecute(String result) {
    super.onPostExecute(result);

    //this method will be running on UI thread

}

}

请帮助解决问题并在 MainActivity 中使用我的 downloadTask 类。

这是我的 MainActivity.class

 public class MainActivity extends AppCompatActivity {
Context context = this;
SharedPreferences sharedPref = context.getSharedPreferences(
        getString(R.string.last_update_key), Context.MODE_PRIVATE);
String lastUpdate = sharedPref.getString(getString(R.string.last_update_key),"0");

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    if (android.os.Build.VERSION.SDK_INT > 9) {
        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
        StrictMode.setThreadPolicy(policy);
    }
    if(lastUpdate == "0"){

        Toast.makeText(this,R.string.need_for_update,Toast.LENGTH_LONG).show();


    }
}

【问题讨论】:

  • 添加您的主要活动代码或尝试新的 downloadTask().exucute();
  • @Pavya 没有解决问题!
  • 我在 mainacitivity plus 中看不到任何 downloadTask 类相关代码,context 为空
  • @Pavneet_Singh 是对的,让它公开然后新的 downloadTask(desUrl, date, context).exucute()

标签: java android class object


【解决方案1】:

你有一个private 构造函数,所以这个类的对象不能从其他类创建,所以让它public

/*private*/ public downloadTask(String desURL, String Date,Context context){

    this.desURL = desURL;
    this.Date = Date;
    this.context = context;

}

提示:在onCreate 内移动下面的代码,因为context 将为空

sharedPref = getSharedPreferences(
        getString(R.string.last_update_key), Context.MODE_PRIVATE);
lastUpdate = sharedPref.getString(getString(R.string.last_update_key),"0");

【讨论】:

  • 那么你能展示一下你是如何使用它的吗,因为private 显然是一个不允许你创建这个类的对象的问题
【解决方案2】:

我错误地在 java(Test) 部分中制作了 downloadTask 文件,移动它后,我的问题解决了

【讨论】:

  • 您认为它与private downloadTask 合作吗?加上你在这里有一个明显的例外context.getSharedPreferences( getString(R.string.last_update_key), Context.MODE_PRIVATE);
猜你喜欢
  • 1970-01-01
  • 2016-08-01
  • 1970-01-01
  • 2016-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-03
相关资源
最近更新 更多