无法解析android studio中的某些符号

时间:2014-12-11 22:20:55

标签: java android class

我一直有这个错误,我刚创建的项目的这个类(DataProvider)似乎不接受.add或.put。但我的MainActivity类接受它们就好了。我已经完成了Invalidate Caches和Restart。有人可以向我解释为什么会发生这种情况以及我可以采取哪些措施来解决这个问题?

的DataProvider:

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

public class DataProvider {
public static HashMap<String, List<String>> getInfo()

HashMap<String, List<String>> MoviesDetails = new HashMap<String, List<String>>();

List<String> Action_Movies = new ArrayList<String>();
 //'.add'  would be an error in red.  Cannot resolve symbol 'add'. 
Action_Movies.add("");
List<String> Romantic_Movies = new ArrayList<String>();

Romantic_Movies.add("");
List<String> Horror_Movies = new ArrayList<String>();
Horror_Movies.add("");
List<String> Comedy_Movies = new ArrayList<String>();
Comedy_Movies.add("");

}

MainActivity:

import android.app.Activity;
import android.os.Bundle;
import android.widget.ExpandableListView;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;


public class MainActivity extends Activity {
HashMap<String, List<String>> Movies_categories;
List<String> Movies_list;
ExpandableListView Exp_list;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    List<String> Test = new ArrayList<String>();
    Test.add("Test");



}

}

3 个答案:

答案 0 :(得分:4)

您在此行末尾缺少分号:

public static HashMap<String, List<String>> getInfo()

这使得分析的代码变得疯狂,并且不能正确地将对象视为其类型。只需添加分号。

此外,您可能希望删除该行末尾的括号,因为它表明它是一种方法。所以做这样的事情:

public static HashMap<String, List<String>> getInfo;

或者这个:

public static HashMap<String, List<String>> getInfo(){
    //Some actual code here, which returns a HashMap
};

现在我看到你的整个班级结构搞砸了。请尝试以下代码:

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

public class DataProvider {
public static HashMap<String, List<String>> getInfo;

    public DataProvider() { 

        HashMap<String, List<String>> MoviesDetails = new HashMap<String, List<String>>();

        List<String> Action_Movies = new ArrayList<String>();
        Action_Movies.add("");
        List<String> Romantic_Movies = new ArrayList<String>();

        Romantic_Movies.add("");
        List<String> Horror_Movies = new ArrayList<String>();
        Horror_Movies.add("");
        List<String> Comedy_Movies = new ArrayList<String>();
        Comedy_Movies.add("");

    }

}

答案 1 :(得分:2)

另一方面,考虑在构造函数之外创建变量并在构造函数内初始化它们。

public class DataProvider {
    public static HashMap<String, List<String>> getInfo;
    HashMap<String, List<String>> movieDetails;
    List<String> actionMovies;
    List<String> romanticMovies;
    List<String> horrorMovies;
    List<String> comedyMovies;

    public DataProvider() {
        movieDetails = new HashMap<String, List<String>>();
        actionMovies = new ArrayList<String>();
        actionMovies.add("");
        romanticMovies = new ArrayList<String>();
        romanticMovies.add("");
        horrorMovies = new ArrayList<String>();
        horrorMovies.add("");
        comedyMovies = new ArrayList<String>();
        comedyMovies.add("");
    }
}

答案 2 :(得分:0)

这些行可能已添加到类的内部,但在构造函数或方法的外部。 确保说明在方法之内