2017-09-08 7 views
0
 
public class CatalogActivity extends AppCompatActivity implements 
     LoaderManager.LoaderCallbacks { 

    private static final int PRODUCT_LOADER = 0; 

    ProductCursorAdapter mCursorAdapter; 

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

     ListView productsListView = (ListView) findViewById(R.id.list); 

     View emptyView = findViewById(R.id.empty_view); 
     productsListView.setEmptyView(emptyView); 
     ProductCursorAdapter mCursorAdapter = new ProductCursorAdapter(this, null); 
     productsListView.setAdapter(mCursorAdapter); 

     FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
     fab.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Intent intent = new Intent(CatalogActivity.this, AddProductActivity.class); 
       startActivity(intent); 
      } 
     }); 


     productsListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView adapterView, View view, int position, long id) { 
       Intent intent = new Intent(CatalogActivity.this, DetailEditActivity.class); 
       Uri currentProductUri = ContentUris.withAppendedId(ProductContract.ProductEntry.CONTENT_URI, id); 
       intent.setData(currentProductUri); 
       startActivity(intent); 
      } 
     }); 
     Log.e("working fine" , "product"); 
     getSupportLoaderManager().initLoader(PRODUCT_LOADER, null, this); 
    } 

And the onLoadFinished() method is : 



    public void onLoadFinished(Loader loader, Cursor data) { 

     mCursorAdapter.swapCursor(data); 
    } 

をonLoadFinished呼び出すとき、私は、次のようなエラーを受信し続けます。 ProductCursorAdapter.swapCursor(android.database.Cursor) 'nullオブジェクトの参照でjava.lang.NullPointerExceptionが)(

私のコードに何か問題がありますか? ありがとうございます。

+0

'ProductCursorAdapter'を' onCreate() 'の' ProductCursorAdapter mCursorAdapter = ... '行の先頭から削除します。' mCursorAdapter'という名前のローカル変数が宣言され、 'mCursorAdapter'フィールドはnullのままです。 –

答えて

1

ProductCursorAdapter mCursorAdapterをクラスのコンテキスト内に作成していますが、onCreateのものではなく別のローカル変数を初期化するためです。ここでは、問題の行は次のようになります。

でなければなりません

ProductCursorAdapter mCursorAdapter = new ProductCursorAdapter(this, null);

onCreate()の代わりに

mCursorAdapter = new ProductCursorAdapter(this, null);

+0

詳細な説明をありがとう。 – RanX

1

ProductCursorAdapter mCursorAdapter = new ProductCursorAdapter(this, null); 

の操作を行います。

mCursorAdapter = new ProductCursorAdapter(this, null); 

onCreate()の内部にローカル変数を作成しているため、クラスのフィールドは初期化されていません。

+1

さて、downvoter。 – azizbekian

+0

なぜ私はあなたがdownvoteを持っているのか理解できません、私は同じ答えに行くつもりです。私はupvote、編集upvotedします。 –

+0

ありがとう、あなたの答えの多くは、今は正常に動作します。 – RanX

関連する問題