Java 为什么我会得到一个“a”;无法解析方法“;getApplication上的错误?

Java 为什么我会得到一个“a”;无法解析方法“;getApplication上的错误?,java,android,android-fragments,syntax-error,Java,Android,Android Fragments,Syntax Error,我相信我已经把所有的代码整理好了,但是我已经为这个错误苦读了几个小时了。我正在尝试使用片段设置一个基本的应用程序框架。如果我将项目结构为基于活动,并将字符串数据与下面的代码块一起放在MainActivity中,我就可以让代码正常工作,但这无助于我将它们移动到片段中 在MainActivity中(相同的代码块在不使用片段的情况下工作),它被放置在onCreate中,但如果我将其放置在片段中,并且我了解到将其放置在onCreate中不是正确的位置,则没有什么区别 我是Android开发的新手,如果你

我相信我已经把所有的代码整理好了,但是我已经为这个错误苦读了几个小时了。我正在尝试使用片段设置一个基本的应用程序框架。如果我将项目结构为基于活动,并将字符串数据与下面的代码块一起放在MainActivity中,我就可以让代码正常工作,但这无助于我将它们移动到片段中

在MainActivity中(相同的代码块在不使用片段的情况下工作),它被放置在onCreate中,但如果我将其放置在片段中,并且我了解到将其放置在onCreate中不是正确的位置,则没有什么区别

我是Android开发的新手,如果你能用一个代码示例来解释你的答案,那将非常有帮助

谢谢你抽出时间来看我

我的整个片段在下面

public class BasicsPageFragment extends Fragment  {

RecyclerView recyclerView;
private Recycler_View_Adapter adapter;

public BasicsPageFragment() {
    // Required empty public constructor
}

@Override
public void onCreate(Bundle savedInstanceState) {

}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this

    View rootView = inflater.inflate(R.layout.recycler_view, container, false);

    RecyclerView rv = (RecyclerView) rootView.findViewById(R.id.fragment_container);
    rv.setHasFixedSize(true);


    LinearLayoutManager llm = new LinearLayoutManager(getActivity());
    rv.setLayoutManager(llm);

    return rootView;
}

@Override
protected void onViewCreated(Bundle savedInstanceState) {

    // below I am receiving an error (cannot resolve method 'getApplication()'
    // the line of code above it is also throwing "getView() in Fragment cannot be applied"
    // and savedInstanceState says "OnViewCreated (android.view.View, Bundle)
    // in Fragment cannot be applied to (android.os.Bundle)"
    super.onViewCreated(savedInstanceState);

    List<CardviewData> data = fill_with_data();
    recyclerView = (RecyclerView) getView(R.id.fragment_container);
    adapter = new Recycler_View_Adapter(data, getApplication());
    recyclerView.setAdapter(adapter);
    recyclerView.setLayoutManager(new LinearLayoutManager(this));

    //  errors stop here

}

//Create a list of CardviewData objects
public List<CardviewData> fill_with_data() {

    List<CardviewData> data = new ArrayList<>();

    data.add(new CardviewData("Batman vs Superman", "Following the destruction of Metropolis, Batman embarks on a personal vendetta against Superman ", R.drawable.ic_action_movie));
    data.add(new CardviewData("X-Men: Apocalypse", "X-Men: Apocalypse is an upcoming American superhero film based on the X-Men characters that appear in Marvel Comics ", R.drawable.ic_action_movie));
    data.add(new CardviewData("Captain America: Civil War", "A feud between Captain America and Iron Man leaves the Avengers in turmoil.  ", R.drawable.ic_action_movie));
    data.add(new CardviewData("Kung Fu Panda 3", "After reuniting with his long-lost father, Po  must train a village of pandas", R.drawable.ic_action_movie));
    data.add(new CardviewData("Warcraft", "Fleeing their dying home to colonize another, fearsome orc warriors invade the peaceful realm of Azeroth. ", R.drawable.ic_action_movie));
    data.add(new CardviewData("Alice in Wonderland", "Alice in Wonderland: Through the Looking Glass ", R.drawable.ic_action_movie));

    return data;
}
}
公共类BasicsPageFragment扩展了片段{
回收视图回收视图;
私人回收站\u视图\u适配器;
公共基本页面片段(){
//必需的空公共构造函数
}
@凌驾
创建时的公共void(Bundle savedInstanceState){
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
//为此目的对布局进行充气
视图根视图=充气机。充气(R.layout.recycler\u视图,容器,假);
RecyclerView rv=(RecyclerView)rootView.findViewById(R.id.fragment\u容器);
rv.setHasFixedSize(真);
LinearLayoutManager llm=新的LinearLayoutManager(getActivity());
rv.setLayoutManager(llm);
返回rootView;
}
@凌驾
创建视图时受保护的无效(捆绑保存状态){
//下面我收到一个错误(无法解析方法'getApplication()'
//上面的代码行也抛出“片段中的getView()无法应用”
//savedInstanceState说“OnViewCreated(android.view.view,Bundle)
//in片段不能应用于(android.os.Bundle)”
super.onViewCreated(savedInstanceState);
列表数据=用_数据()填充_;
recyclerView=(recyclerView)getView(R.id.fragment\u容器);
adapter=新的回收器\视图\适配器(数据,getApplication());
recyclerView.setAdapter(适配器);
recyclerView.setLayoutManager(新的LinearLayoutManager(本));
//错误到此为止
}
//创建CardviewData对象的列表
公共列表用_数据填写_(){
列表数据=新的ArrayList();
data.add(新的CardviewData(“蝙蝠侠vs超人”,“大都会被摧毁后,蝙蝠侠与超人展开了个人仇杀”,R.drawable.ic_动作电影));
data.add(新的CardviewData(“X战警:启示录”,“X战警:启示录”是一部即将上映的美国超级英雄电影,基于惊奇漫画中出现的X战警角色),R.drawable.ic_action_电影);
data.add(新的CardviewData(“美国队长:内战”,“美国队长和钢铁侠之间的世仇让复仇者陷入混乱”,R.drawable.ic_action_movie));
data.add(新的CardviewData(“功夫熊猫3”,“与失散多年的父亲团聚后,阿宝必须训练一个熊猫村”,R.drawable.ic_动作电影));
data.add(新的CardviewData(“魔兽”,“逃离他们垂死的家园去殖民另一个,可怕的兽人战士入侵和平的艾泽拉斯王国”,R.drawable.ic_action_movie));
添加(新的CardviewData(“爱丽丝梦游仙境”,“爱丽丝梦游仙境:透过镜子”,R.drawable.ic_action_movie));
返回数据;
}
}
如果您需要适配器

public class Recycler_View_Adapter extends RecyclerView.Adapter<CardviewViewHolder> {

List<CardviewData> list = Collections.emptyList();
Context context;

public Recycler_View_Adapter(List<CardviewData> list, Context context) {
    this.list = list;
    this.context = context;
}

@Override
public CardviewViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

    View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.cardview_layout, parent, false);
    CardviewViewHolder holder = new CardviewViewHolder(v);
    return holder;
}

@Override
public void onBindViewHolder(CardviewViewHolder holder, int position) {
    holder.title.setText(list.get(position).title);
    holder.description.setText(list.get(position).description);
    holder.imageView.setImageResource(list.get(position).imageId);


}

@Override
public int getItemCount() {
    return list.size();
}

@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
    super.onAttachedToRecyclerView(recyclerView);
}

// Insert a new item to the RecyclerView
public void insert(int position, CardviewData data) {
    list.add(position, data);
    notifyItemInserted(position);
}
// Remove a RecyclerView item containing the CardviewData object
public void remove(CardviewData data) {
    int position = list.indexOf(data);
    list.remove(position);
    notifyItemRemoved(position);
}
}
公共类回收器\u视图\u适配器扩展了RecyclerView.Adapter{
List=Collections.emptyList();
语境;
公共回收器\视图\适配器(列表、上下文){
this.list=列表;
this.context=上下文;
}
@凌驾
公共卡ViewHolder onCreateViewHolder(视图组父级,int-viewType){
视图v=LayoutInflater.from(parent.getContext()).flate(R.layout.cardview\u布局,parent,false);
CardViewHolder=新的CardViewHolder(v);
报税表持有人;
}
@凌驾
BindViewHolder上的公共无效(CardViewHolder,内部位置){
holder.title.setText(list.get(position.title));
holder.description.setText(list.get(position.description));
holder.imageView.setImageResource(list.get(position.imageId));
}
@凌驾
public int getItemCount(){
返回list.size();
}
@凌驾
附加ToRecyclerView(RecyclerView RecyclerView)上的公共无效{
super.onAttachedToRecyclerView(recyclerView);
}
//将新项目插入到RecyclerView
公共空白插入(int位置,CardviewData){
列表。添加(位置、数据);
(位置);
}
//删除包含CardviewData对象的RecyclerView项
公共作废删除(CardviewData){
int position=list.indexOf(数据);
列表。删除(位置);
已移除(位置)的项目;
}
}

您必须在片段中使用getActivity()而不是getApplicationContext()。它会起作用的!!

使用

从文件中

getApplicationContext()返回单个全局 当前流程的应用程序对象,通常仅当您需要一个其生命周期与当前上下文分离的上下文时,才应使用该上下文,该上下文与流程的生命周期而不是当前组件相关联

换行

adapter = new Recycler_View_Adapter(data, getApplication());
对此

adapter = new Recycler_View_Adapter(data, getActivity());
使用getApplicationContext()而不是getApplication()@绿色