現在、ローダーの使用方法を習得しようとしていますが、アクティビティでローダーを起動できません。
import Android.support.v4.app.LoaderManager;
import Android.support.v4.content.Loader;
public class ASwitchActivity extends Activity implements
LoaderManager.LoaderCallbacks<SampleLoader.SampleLoaderResult> {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
getLoaderManager().initLoader(0, null, this);
}
public Loader<SampleLoader.SampleLoaderResult> onCreateLoader(int id, Bundle args) {
return new SampleLoader(getBaseContext(), account, "dog");
}
public void onLoadFinished(Loader<SampleLoader.SampleLoaderResult> loader, SampleLoader.SampleLoaderResult out)
{
TextView t=(TextView)findViewById(R.id.testTV);
t.setText("yay");
}
public void onLoaderReset(Loader<SampleLoader.SampleLoaderResult> loader){
}
}
ただし、Eclipseは次のエラーを表示します。
タイプLoaderManagerのメソッドinitLoader(int、Bundle、LoaderManager.LoaderCallbacks)は、引数(int、null、ActivitySwitchActivity)には適用できません
誰かが私が間違っているところを手伝ってくれる?
ご覧のとおり、supportV4ライブラリを使用しています。したがって、ローダーを実装するには、いくつかのことを行う必要があります。
ここにサンプルコードがあります:
import Android.os.Bundle;
import Android.support.v4.app.FragmentActivity;
import Android.support.v4.app.LoaderManager;
import Android.support.v4.content.Loader;
import Android.widget.Toast;
public class MyActivity extends FragmentActivity implements LoaderManager.LoaderCallbacks<Object> {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
getSupportLoaderManager().initLoader(0, null, this);
}
@Override
public Loader<Object> onCreateLoader(int i, Bundle bundle){
return null; // TODO
}
@Override
public void onLoadFinished(Loader loader, Object o) {
Toast.makeText(this, "onLoadFinished", Toast.LENGTH_SHORT).show();
}
@Override
public void onLoaderReset(Loader loader) {
Toast.makeText(this, "onLoaderReset", Toast.LENGTH_SHORT).show();
}
}
ローダーをfragments
で使用する場合は、次のようにします。
getLoaderManager().initLoader(0,null,this);
ローダーをActivity
で使用する場合:
getSupportLoaderManager().initLoader(0,null,this);
getLoaderManager().initLoader(0, null, this);
の3番目のパラメーターは、インターフェースLoaderManager.LoaderCallbacks
を実装するインスタンスにする必要があります。そのため、最初にインターフェースを実装する必要があります。
AppCompatActivityでは、ローダーの初期化にgetSupportLoaderManager().initLoader(0,null,this);
を使用します。