2017-04-12 1 views
0

私はAndroid用のアプリケーションを開発していましたが、私はLoaderManagerに問題が発生しました。私は、次のコードを使用しようとするたびに:それは私に語っAndroid getLoaderManager()。私はこれを使用できないと言っているinitLoader

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に変更する必要がありました。行のthisは活性であるが、この行のinitloader方法は、別々に実装されなければならないLoaderCallbacksインタフェースを受け入れるよう

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

この行は、動作するようになっていませんでした。

+0

私はそれを正しく実装されますが、getLoaderManagerはgetSupportloaderManager –

+0

する必要があります私はすでにあなたの問題を解決していることに気づきました - それはあなたにとって良いことです。私は最初に何が間違っていたかを指摘しました - それはあなたがあなたの質問で明示的に尋ねたものです。 – Muntasir

関連する問題