我试图更新来自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());
}
}
我从我的FragmentActivity调用公共无效setSummary(迈德特MYDATA的)以更新片段的数据。
在这里我得到像下面这样的空指针异常。
显示java.lang.NullPointerException:尝试上的空对象引用
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);
}
}
你能说明你到底是如何得到你的活动中MyFragment的实例的参考吗? – user35603
你不清楚你如何将Fragment添加到活动中。您是否在XML中这样做? –
是的,我用xml的 – KCRaju