0

私のアプリケーションのMainActivityに2つのフラグメントがあります。 1つのフラグメントがBluetoothデバイスからデータを読み取り、データベースを作成します。その他の場合、このデータがBarGraphに表示されます。それは正常に動作しています。しかし、新しいデータが来たとき、BarGraphは動的に更新されません。私はPageChangeListenerを実施し、その結果BarGraphのフラグメントへのユーザの変更は、それがページが選択されるたびにフラグメントを更新します

mViewPager.addOnPageChangeListener(new OnPageChangeListener() { 

     @Override 
     public void onPageSelected(int position) { 
      // TODO Auto-generated method stub 
       mSectionsPagerAdapter.instantiateItem(mViewPager, position); 
       if(position == 1){ 
        AnalyticsFragment.newInstance(position).updateChart(getApplicationContext()); 
        //af = new AnalyticsFragment(); 
        //af.updateChart(); 
       } 
     }.. 

AnalyticsFragment(BarGrapg 1)を以下のように更新されたデータベースから読み込むことで、私のBarGraphのを更新するメソッドのupdateChartを持って取得する場合

public void updateChart(Context context){ 
     //Getting weight and time from db 
     List<String> list = new ArrayList<String>(); 
     if(context == null) //This is because I get NullPointerError here 
      return; 
     FeedReaderDbHelper mDbHelper = new FeedReaderDbHelper(context); 
     list = mDbHelper.getAllWeight(); 
     if (list.isEmpty()){ 
      Log.w(tag, "List of weights is empty!!"); 
      return; 
     } 
     drawgraph(list); 
    } 

しかし、新しいデータが来ると更新されません。私は間違って何かしていますか?

P.S.これは確かに重複した質問ではありません。私はすべてのsimularものを通過し、それらが役に立たないことがわかった。私はあなたがあなたの代わりにnewInstanceを作成するコードの下にすべての時間を使用することができ、この刺激性のエラーは常に

java.lang.NullPointerException: Attempt to invoke virtual method 'android.database.sqlite.SQLiteDatabase android.content.Context.openOrCreateDatabase(java.lang.String, int, android.database.sqlite.SQLiteDatabase$CursorFactory, android.database.DatabaseErrorHandler)' on a null object reference

答えて

0

これはそれにアクセスして更新するには、あなたのAdapterからattachedであるあなたがFragmentにアクセスする方法はなく、得続けますスクロール。

AnalyticsFragment fragment = (AnalyticsFragment) viewPager.getAdapter().instantiateItem(viewPager,0/* position of your fragment */); 

今あなたが

fragment.updateChart(); 

が自分に好意を行うと、あなたのFragmentにごActivityからContextを渡すことはありませんを行うことができます。

は、メソッドのparamsから contextを削除し、代わりに、不要になった context paramとして FragmentgetContext();を使用しています。

+0

ありがとうございました。それは魅力として働いた。 –

関連する問題