错误:(36,74)错误:类型不兼容:片段无法转换为上下文 [英] Error:(36, 74) error: incompatible types: Fragment cannot be converted to Context

查看:80
本文介绍了错误:(36,74)错误:类型不兼容:片段无法转换为上下文的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个称为CalendarFragment的片段.尝试执行程序时出现此错误.错误:(36,74)错误:类型不兼容:CalendarFragment无法转换为上下文

I have a fragment called CalendarFragment. I am getting this error when i tried executing the program. Error:(36, 74) error: incompatible types: CalendarFragment cannot be converted to Context

CalendarFragment:

CalendarFragment :

package app.pal.study.samplestudy;

import android.app.Fragment;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import java.util.Date;
import java.util.List;

public class CalendarFragment  extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

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

    return rootView;
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.fragment_calendar);
}
@Override
public void onResume() {
    super.onResume();
    refresh();
}

private void refresh() {
    CalendarEventDataSource dataSource = new CalendarEventDataSource(this);
    dataSource.openReadOnlyDB();
    final List<CalendarEvent> calendarEvents = dataSource.getAllEvents();
    dataSource.close();

    CalAllEventsListAdapter adapter = new CalAllEventsListAdapter(calendarEvents);

    ListView listView = (ListView) getView().findViewById(R.id.all_event_list);
    listView.setAdapter(adapter);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if (item.getItemId() == android.R.id.home) {
        end();
        return true;
    }
    return super.onOptionsItemSelected(item);
}


@Override
public void onBackPressed() {
    end();
}

private void end() {
    Intent data = new Intent();
    data.putExtra(Constants.DATE_KEY, (Date) getIntent().getExtras().get(Constants.DATE_KEY));
    setResult(RESULT_OK, data);
    finish();
}
}

推荐答案

片段代表活动中的行为或用户界面的一部分.

A Fragment represents a behavior or a portion of user interface in an Activity.

  1. 调用 onCreateView 而不是 onCreate .删除 onCreate()

调用 getActivity(),而不是. getActivity()返回此片段当前与之关联的活动.

CalendarEventDataSource dataSource =新CalendarEventDataSource(getActivity());

CalendarEventDataSource dataSource = new CalendarEventDataSource(getActivity());

问题

    @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.fragment_calendar);
}

此代码为Activity.您应该使用您的 onCreateView 方法.

This code for Activity . You should use your onCreateView method .

 public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) 
  {

        View rootView = inflater.inflate(R.layout.fragment_calendar, container, false);
        return rootView;
  }

http://developer.android.com/intl/es/guide/components/fragments.html

这篇关于错误:(36,74)错误:类型不兼容:片段无法转换为上下文的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆