无法访问onCreateView()之外的视图 [英] Unable to access view outside onCreateView()

查看:83
本文介绍了无法访问onCreateView()之外的视图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图从活动中更新片段的视图.并且我得到了nullpointerException.

I have trying to update views of fragment from activity.And i am getting nullpointerException.

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调用 public void setSummary(MyData myData)来更新片段上的数据.

I am calling public void setSummary(MyData myData) from my FragmentActivity to update the data on fragment.

在这里,我得到了如下的空指针异常.

Here i am getting null pointer exception like below.

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);
}

}

推荐答案

当您放大视图时

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

那样,您将获得Null指针Exseption

that way you got Null pointer Exseption

这篇关于无法访问onCreateView()之外的视图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆