2017-04-12 50 views
0

我遇到了LoaderManager的问题。每当我尝试使用下面的代码:Android getLoaderManager()。initLoader说我在为Android开发应用程序时无法使用

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

它告诉我,我不能使用此。这里是我的代码的一部分:

public class MainActivity extends AppCompatActivity implements LoaderManager.LoaderCallbacks<Cursor> { 

    private CursorAdapter cursorAdapter; 

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

     insertNote("New Note"); 

     String[] from = {DBComHelper.NOTE_TEXT}; 
     int[] to = {android.R.id.text1}; 

     cursorAdapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, null, from, to, 0); 

     ListView list = (ListView) findViewById(android.R.id.list); 
     list.setAdapter(cursorAdapter); 

     getLoaderManager().initLoader(0, null, this); 
    } 

下面是活动代码:

package com.berendhulshof.privatenotes; 

import android.content.ContentValues; 
import android.database.Cursor; 
import android.net.Uri; 
import android.support.v4.app.LoaderManager; 
import android.support.v4.content.CursorLoader; 
import android.support.v4.content.Loader; 
import android.support.v4.widget.CursorAdapter; 
import android.support.v4.widget.SimpleCursorAdapter; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v4.app.FragmentActivity; 
import android.os.Bundle; 
import android.util.Log; 
import android.widget.ListView; 

public class MainActivity extends AppCompatActivity implements LoaderManager.LoaderCallbacks<Cursor> { 

    private CursorAdapter cursorAdapter; 

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

     insertNote("New Note"); 

     String[] from = {DBComHelper.NOTE_TEXT}; 
     int[] to = {android.R.id.text1}; 

     cursorAdapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, null, from, to, 0); 

     ListView list = (ListView) findViewById(android.R.id.list); 
     list.setAdapter(cursorAdapter); 

     getLoaderManager().initLoader(0, null, this); 
    } 

    private void insertNote(String noteText) { 
     ContentValues values = new ContentValues(); 
     values.put(DBComHelper.NOTE_TEXT, noteText); 
     Uri noteUri = 
     getContentResolver().insert(NotesProvider.CONTENT_URI, values); 
     Log.d("MainActivity", "Inserted note " + noteUri.getLastPathSegment()); 
    } 

    @Override 
    public Loader onCreateLoader(int id, Bundle args) { 
     return new CursorLoader(this, NotesProvider.CONTENT_URI, null, null, null, null); 
    } 

    @Override 
    public void onLoadFinished(Loader<Cursor> loader, Cursor data) { 
     cursorAdapter.swapCursor(data); 
    } 

    @Override 
    public void onLoaderReset(Loader loader) { 
     cursorAdapter.swapCursor(null); 
    } 
} 

有人可以请给我解释一下我在做什么错在这里?

+0

这个问题的答案工作:http://stackoverflow.com/questions/40058584/implementing-loadercallbacks-in-activity-android –

回答

0

这可能是重复的,因为有些问题有答案,但大多数问题也不使用正确的导入。但是我愿意。但是,从这个问题的答案帮助:Implementing LoaderCallbacks in Activity Android

我必须更改getLoaderManager getSupportloaderManager。

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

这行不应该工作,因为该行中this是活动的,但在此行中initloader方法接受LoaderCallbacks接口,它必须被单独地实现。

+0

我实现它正确,但getLoaderManager应该getSupportloaderManager –

+0

我已经注意到你解决了你的问题- 那对你很好。我刚刚指出了什么是错的 - 这是你明确提出的问题。 – Muntasir

相关问题