2016-05-05 9 views
0

Я пытаюсь обновить представления фрагмента из activity.And я получаю исключение nullpointerException.Невозможно получить доступ к внешнему виду onCreateView()

public class MyFragment extends Fragment { 

TextView tv_date, tv_memo_title; 

public MyFragment() { 
    // Required empty public constructor 
} 


@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    view = inflater.inflate(R.layout.fragment_day_summary, container, false); 
    tv_date = (TextView) view.findViewById(R.id.tv_date); 
    tv_memo_title = (TextView) view.findViewById(R.id.tv_memo_title); 

    SimpleDateFormat dateFormat = new SimpleDateFormat("MMM dd yyyy"); 
    //get current date time with Date() 
    Date date = new Date(); 
    day = dateFormat.format(date); 

    setSummary(day); 

    return view; 
} 




public void setSummary(String day) { 


    tv_date.setText(this.day); 
    tv_memo_title.setText(äbcd"); 
} 

public void setSummary(MyData myData) { 


    tv_date.setText(""+myData.getDate()); 
    tv_memo_title.setText(""+myData.getDate()); 

} 
} 

Я называю общественной недействительным setSummary (MyData MyData) от моего FragmentActivity обновить данные на фрагменте.

Здесь я получаю исключение нулевого указателя, как показано ниже.

java.lang.NullPointerException: Попытка вызвать виртуальный метод 'android.view.View android.view.View.findViewById (INT)' на нулевой ссылки на объект

public class SummaryActivity extends FragmentActivity { 


public View onCreateView(String name, @NonNull Context context, @NonNull AttributeSet attrs) { 
    return super.onCreateView(name, context, attrs); 
} 

/** 
* Dispatch to Fragment.onCreateOptionsMenu(). 
* 
* @param featureId 
* @param menu 
*/ 
@Override 
public boolean onCreatePanelMenu(int featureId, Menu menu) { 
    return super.onCreatePanelMenu(featureId, menu); 
} 

Calendar cal = Calendar.getInstance(); 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    mContext = this; 
    setContentView(R.layout.activity_summary); 
    cal.set(Calendar.YEAR, 2016); 
    cal.set(Calendar.MONTH, 02); 
    cal.set(Calendar.DAY_OF_MONTH, 01); 
    // Locate the viewpager in activity_main.xml 
    ViewPager viewPager = (ViewPager) findViewById(R.id.pager); 
    String[] titles = {mContext.getString(R.string.TITLE_SUMMARY), mContext.getString(R.string.SUMMARY_ITEM_1), mContext.getString(R.string.SUMMARY_ITEM_2), mContext.getString(R.string.SUMMARY_ITEM_3), mContext.getString(R.string.SUMMARY_ITEM_4)}; 
    // Set the SummaryViewPagerAdapter into ViewPager 
    viewPager.setAdapter(new SummaryViewPagerAdapter(getSupportFragmentManager(), mContext, titles)); 
} 

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 

    switch (keyCode) { 


     case KeyEvent.KEYCODE_VOLUME_DOWN: 

      cal.set(Calendar.HOUR, cal.get(Calendar.HOUR) - 24); 
      String prevDay = (cal.get(Calendar.MONTH) + 1) + "/" + (cal.get(Calendar.DAY_OF_MONTH)) + "/" + cal.get(Calendar.YEAR); 
      int topFragment = getSupportFragmentManager().getFragments().size() - 2; 
      if (getSupportFragmentManager().getFragments().get(topFragment) instanceof DaySummaryFragment) { 
       myData = DBWrapper.getAllData(prevDay, mContext); 
       myFragment.setSummary(myData); 

      } 
      break; 
     case KeyEvent.KEYCODE_VOLUME_UP: 

      cal.set(Calendar.HOUR, cal.get(Calendar.HOUR) + 24); 
      String nextDay = (cal.get(Calendar.MONTH) + 1) + "/" + (cal.get(Calendar.DAY_OF_MONTH)) + "/" + cal.get(Calendar.YEAR); 
      topFragment = getSupportFragmentManager().getFragments().size() - 2; 

      if (getSupportFragmentManager().getFragments().get(topFragment) instanceof DaySummaryFragment) { 

       myData = DBWrapper.getAllData(prevDay, mContext); 
       myFragment.setSummary(myData); 
      }    break; 
    } 
    return super.onKeyDown(keyCode, event); 
} 

}

+0

Можете ли вы показать, как именно вы получаете ссылку на экземпляр MyFragment в своей деятельности. – user35603

+0

Непонятно, как вы добавили фрагмент в Activity. Вы сделали это в XML? –

+0

yes Я использовал xml's – KCRaju

ответ

0

, когда вы надуть вид вы должны сделать

View view = inflater.inflate(R.layout.fragment_day_summary, container, false); 
return view; 

таким образом вы получили Null указатель Exseption

+0

Даже я пробовал так же. Первоначально мой код такой. Позже, чтобы попытаться использовать этот объект «view» на внешних пользователях, объявленных как public – KCRaju

0

Вы вызываете setSummary до появления Fragment. Вы называете это методом ActivityonCreate?

+0

Нет, я звоню в onKeyDown() в FragmentActivity – KCRaju

+1

Можете ли вы опубликовать код своей деятельности? –

+0

Код операции Добавлено – KCRaju

Смежные вопросы