2014-12-11 4 views
1

방금 ​​만든 내 프로젝트의이 클래스 (DataProvider)가 .add 또는 .put을 허용하지 않는 경우이 오류가 발생했습니다. 하지만 내 MainActivity 클래스는 괜찮습니다. 이미 캐시를 무효화하고 다시 시작했습니다. 누군가가 왜 이런 일이 일어나고 있는지 그리고 내가 고칠 수있는 일을 설명 할 수 있습니까?android studio에서 특정 기호를 확인할 수 없습니다.

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"); 



} 

}

+2

getInfo() 메소드에 중괄호가 없으므로 DataProvider 클래스가 컴파일되지 않습니다. 이 오류를 수정하고 다시 컴파일 해보십시오. – Egor

+1

사이드 노트 : Java/Android 명명 규칙을 따르십시오. 변수/필드는 낙타로되어 있으며 항상 소문자로 시작합니다 (romanticMovies). –

+0

부수적으로 대문자로 변수 이름을 시작하지 않는 것이 일반적입니다. 낙타 등 표기법 사용을 고려하십시오. 예 :'List actionMovies; ' –

답변

4

당신이 줄의 끝에 세미콜론 누락 :

을210

코드를 분석하면 코드가 미친 듯이 보이고 개체가 해당 형식으로 올바르게 표시되지 않습니다. 그냥 세미콜론을 추가하십시오.

또한 방법의 제안이므로 줄 끝의 괄호를 제거하는 것이 좋습니다. 그래서 같은 것을 할 :

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

또는이 :

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

는 지금은 전체 클래스 tructure가 엉망 것을 알 수있다. 아래 코드를 시도하십시오 :

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(""); 

    } 

} 
+0

예, 시도했습니다. 어떤 이유로 든 오류가 발생합니다. 이 오류가 발생합니다 : '누락 된 메서드 본문 또는 선언 추상.' 또한 여전히 문제를 해결하지 못합니다 – ACluelessProgramer

+0

예제 2와 3을 사용해 보았습니까? – Kelevandos

+0

예, 둘 다 시도했습니다. 여전히 .add에 관한 동일한 오류가 발생합니다. 해결할 수 없습니다. – ACluelessProgramer

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(""); 
    } 
} 
+0

주제와 관련이 없지만 좋은 지적입니다. 내 upvote 선생님 :-) – Kelevandos

+0

좋아, 나는 명심 할거야. 그것은 내가 코딩 한 것보다 낫다. 좋은 공헌. – ACluelessProgramer

관련 문제