android– 找不到id的视图 –DialogFragment Fragment

android– 找不到id的视图 –DialogFragment Fragment,第1张

概述我有一个简单布局的DialogFragment.我想添加一个片段(并在将来将此片段替换为另一个片段)到DialogFragment布局内的FrameLayout.但是,添加新片段的方法失败,并显示错误:片段Fragment_AlertsManage{41e7cb68}“找不到id0x7f0b004fcom.kennel39.diabeteslive_adtdev:id/frameAler

我有一个简单布局的DialogFragment.我想添加一个片段(并在将来将此片段替换为另一个片段)到DialogFragment布局内的FrameLayout.但是,添加新片段的方法失败,并显示错误:

片段Fragment_AlertsManage {41e7cb68}“找不到ID 0x7f0b004f com.kennel39.diabeteslive_adtdev:ID / frameAlertsContainer的视图

我检查了我的xml,尝试了不同的方法,并在stackoverflow上读了一些类似的问题,但我找不到解决方案.

public class DialogManageAlerts extends DialogFragment{static int patIEnt_ID;public static DialogManageAlerts newInstance(int given_patIEnt_ID){    DialogManageAlerts frag = new DialogManageAlerts();    patIEnt_ID = given_patIEnt_ID;    Bundle bund = new Bundle();    bund.putInt("PatIEnt_ID", patIEnt_ID);    frag.setArguments(bund);    return frag;}@OverrIDepublic VIEw onCreateVIEw(LayoutInflater inflater, VIEwGroup container,        Bundle savedInstanceState) {    VIEw mainVIEw = inflater.inflate(R.layout.dialog_alerts_master, container, false);                  getDialog().getwindow().requestFeature(Window.FEATURE_NO_Title);    FragmentManager myFragmentManager = getFragmentManager();    FragmentTransaction myTransact = myFragmentManager.beginTransaction();    Fragment_AlertsManage manageAlertsFragment = new Fragment_AlertsManage();    myTransact.add(R.ID.frameAlertsContainer, manageAlertsFragment);    myTransact.commit();    return mainVIEw;}

layout.dialog_alerts_master:

<?xml version="1.0" enCoding="utf-8"?><linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"    androID:layout_wIDth="match_parent"    androID:layout_height="match_parent"    androID:orIEntation="vertical"    androID:background="@color/white_regular" >    <linearLayout         androID:layout_wIDth="match_parent"        androID:layout_height="wrap_content"        androID:padding="10dp"        androID:background="@drawable/lower_border_background_white">    <TextVIEw        androID:ID="@+ID/tvManageAlertsTitle"        androID:layout_wIDth="match_parent"        androID:layout_height="wrap_content"        androID:text="@string/manage_alerts_Title"        androID:textAppearance="?androID:attr/textAppearanceLarge"        androID:gravity="center_horizontal" />    </linearLayout>    <FrameLayout        androID:ID="@+ID/frameAlertsContainer"        androID:layout_wIDth="match_parent"        androID:layout_height="wrap_content" >    </FrameLayout>    </linearLayout>

和Fragment_AlertsManage类:

public class Fragment_AlertsManage extends Fragment implements OnClickListener {    int patIEnt_ID;    @OverrIDe    public VIEw onCreateVIEw(LayoutInflater inflater, VIEwGroup container,            Bundle savedInstanceState) {        VIEw myVIEw = inflater.inflate(R.layout.fragment_alerts_manage, container, false);         //Get buttons               button btnAdd = (button)myVIEw.findVIEwByID(R.ID.btnAdDalert);        btnAdd.setonClickListener(this);        button btnBack = (button)myVIEw.findVIEwByID(R.ID.btnBack);        btnBack.setonClickListener(this);        //FILL CONTENT        populateContent(myVIEw);        return myVIEw;          }    @OverrIDe    public voID onClick(VIEw v) {        // Todo auto-generated method stub        switch (v.getID()) {            case R.ID.btnAdDalert: {                //Switch fragment                FragmentManager myFragmentManager = getFragmentManager();                FragmentTransaction myTransact = myFragmentManager.beginTransaction();                Fragment_AlertsAdd adDalertFragment = new Fragment_AlertsAdd();                myTransact.addToBackStack("PrevIoUs");                myTransact.replace(this.getVIEw().getID(), adDalertFragment);                myTransact.commit();                break;            }            case R.ID.btnBack: {                FragmentManager myFragmentManager = getFragmentManager();                FragmentTransaction myTransact = myFragmentManager.beginTransaction();                myTransact.remove(Fragment_AlertsManage.this);                //Launch Home                Intent homeIntent = new Intent(this.getActivity(), HomeActivity.class);                homeIntent.putExtra("patIEnt_ID", patIEnt_ID);                startActivity(homeIntent);                getActivity().finish();                break;            }        }    }    public voID populateContent(VIEw myVIEw){        try {            ArrayList<Alert> alerts = new RetrIEveAlerts(patIEnt_ID).execute().get();            ListVIEw List = (ListVIEw) myVIEw.findVIEwByID(R.ID.reminder_ListvIEw);            Alertslistadapter alertsAdapter = new Alertslistadapter(this.getActivity(), alerts);            List.setAdapter(alertsAdapter);        } catch (InterruptedException e) {            // Todo auto-generated catch block            e.printstacktrace();        } catch (ExecutionException e) {            // Todo auto-generated catch block            e.printstacktrace();        }    }

为什么我会收到此错误,我该怎么做才能解决?

解决方法:

getFragmentManager()上的doc:

Return the FragmentManager for interacting with fragments associated
with this fragment’s activity.

R.ID.frameAlertsContainer位于DialogFragment的布局中,而不是活动的布局,因此无法找到它.请尝试使用getChildFragmentManager().但是我无法判断这是否在onCreateVIEw()方法中有效,因为视图尚未与片段相关联.您可能需要将其放在onStart()或其他内容中.

总结

以上是内存溢出为你收集整理的android – 找不到id的视图 – DialogFragment Fragment全部内容,希望文章能够帮你解决android – 找不到id的视图 – DialogFragment Fragment所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1107302.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存