Java 错误的第三个参数,但应该通过视频教程工作

Java 错误的第三个参数,但应该通过视频教程工作,java,android,android-studio,Java,Android,Android Studio,我是在遵循一个规则,但当我到达要制作的部件时: getLoaderManager().initLoader(0, null, this); 这个正在制造问题。它引用了MainActivity,但它不接受实现 其具体信息是: 错误的第三个参数类型。发现: “com.example.plainolnotes.MainActivity”,必填项: 'android.app.LoaderManager.LoaderCallbacks package com.example.plainolnotes;

我是在遵循一个规则,但当我到达要制作的部件时:

getLoaderManager().initLoader(0, null, this);
这个
正在制造问题。它引用了
MainActivity
,但它不接受实现

其具体信息是:

错误的第三个参数类型。发现: “com.example.plainolnotes.MainActivity”,必填项: 'android.app.LoaderManager.LoaderCallbacks

package com.example.plainolnotes;
导入android.content.ContentValues;
导入android.database.Cursor;
导入android.net.Uri;
导入android.os.Bundle;
导入android.support.v4.app.LoaderManager;
导入android.support.v4.content.CursorLoader;
导入android.support.v4.content.Loader;
导入android.support.v4.widget.CursorAdapter;
导入android.support.v4.widget.SimpleCursorAdapter;
导入android.support.v7.app.AppActivity;
导入android.support.v7.widget.Toolbar;
导入android.util.Log;
导入android.view.Menu;
导入android.view.MenuItem;
导入android.widget.ListView;
公共类MainActivity扩展了AppCompatActivity
实现LoaderManager.LoaderCallbacks
{
专用游标适配器游标适配器;
//@TargetApi(Build.VERSION\u CODES.JELLY\u BEAN)//不是一个好的长期解决方案
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar Toolbar=(Toolbar)findViewById(R.id.Toolbar);
设置支持操作栏(工具栏);
插入注释(“新注释”);
/*
Cursor Cursor=getContentResolver().query(NotesProvider.CONTENT\u URI,
DBOpenHelper.ALL_列,null,null,null,null);
*/
字符串[]from={DBOpenHelper.NOTE_TEXT};
int[]to={android.R.id.text1};
cursorAdapter=新的SimpleCursorAdapter(此,
android.R.layout.simple_list_item_1,null,from,to,0);
ListView列表=(ListView)findViewById(android.R.id.list);
list.setAdapter(游标适配器);
//getLoaderManager().initLoader(0,null,this);
getLoaderManager().initLoader(0,null,this);
/*
FloatingActionButton fab=(FloatingActionButton)findViewById(R.id.fab);
fab.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
Snackbar.make(查看“替换为您自己的操作”,Snackbar.LENGTH\u LONG)
.setAction(“Action”,null).show();
}
});
*/
}
私有void insertNote(字符串noteText){
ContentValues=新的ContentValues();
value.put(DBOpenHelper.NOTE\u TEXT,noteText);
Uri noteUri=getContentResolver().insert(NotesProvider.CONTENT\u Uri,
价值观);
Log.d(“MainActivity”,“Inserted note”+noteUri.getLastPathSegment());
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
getMenuInflater().充气(右菜单菜单菜单主菜单);
返回true;
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
//处理操作栏项目单击此处。操作栏将
//自动处理Home/Up按钮上的点击,只要
//在AndroidManifest.xml中指定父活动时。
int id=item.getItemId();
//noinspection SimplifiableIf语句
if(id==R.id.action\u设置){
返回true;
}
返回super.onOptionsItemSelected(项目);
}
@凌驾
公共加载器onCreateLoader(int-id,Bundle-args){
//当contentProvider需要数据时加载
返回新的游标装入器(此,NotesProvider.CONTENT\u URI,
空,空,空,空);
}
@凌驾
public void onLoadFinished(加载器、光标数据){
游标适配器.swapCursor(数据);
}
@凌驾
公共void onLoaderReset(加载器){
//数据需要删除
游标适配器.swapCursor(null);
}
}

问题在于导入语句

import android.support.v4.app.LoaderManager;
鉴于需要

android.app.LoaderManager.LoaderCallbacks
替换它以解决您的问题

我是如何解决我的问题的:

import android.support.v4.content.CursorLoader;    
import android.support.v4.content.Loader;    
import android.support.v7.app.AppCompatActivity;    
import android.support.v4.app.LoaderManager;    

//Note getSupportLoaderManager()    
getSupportLoaderManager().initLoader(0, null, this);

嗯,实际上我使用的是getSupportLoaderManager()而不是getLoaderManager()。 所以你可以这样做

getSupportLoaderManager().initLoader(0, null, this);

我清理了它,它还是原来的样子。等等,我尝试了一个名为“getSupportLoaderManager()”的alt.方法,它成功了!你知道这一点以及它的区别吗?我切换了它,现在问题是在“implements LoaderManager.LoaderCallbacks”的“LoaderManager”下面加下划线。如果我alt+enter,它会给我两个选项,其中一个选项会使情况变得更糟。等等。你让我思考,通过一些搜索,我发现“getSupportLoaderManager()”是解决方案!你知道这个函数吗?
getSupportLoaderManager().initLoader(0, null, this);