කැබැල්ලෙන් findViewById


1047

මම කැබැල්ලක රූප දර්ශනයක් නිර්මාණය කිරීමට උත්සාහ කරමි, එමඟින් එක්ස්එම්එල් හි මා විසින් නිර්මාණය කරන ලද ඉමේජ්වීව් මූලද්‍රව්‍යය වෙත යොමු වනු ඇත. කෙසේ වෙතත්, findViewByIdක්‍රමය ක්‍රියාත්මක වන්නේ මා ක්‍රියාකාරකම් පන්තියක් දීර් if කළහොත් පමණි. කෙසේ වෙතත් මට එය ෆ්‍රැග්මන්ට් වලද භාවිතා කළ හැකිද?

public class TestClass extends Fragment {
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        ImageView imageView = (ImageView)findViewById(R.id.my_image);
        return inflater.inflate(R.layout.testclassfragment, container, false);
    }
}

මෙම findViewByIdක්රමය ක්රමය අනිශ්චිත බව සඳහන් කර ඇත්තේ එය මත දෝෂයක් ඇත.


Android සඳහා ButterKnife viewbinding පුස්තකාලය භාවිතා කරන්න. ඔබේ සංවර්ධනය වේගවත් කිරීම සඳහා එය ක්‍රියාත්මක වන ආකාරය, ඔබගේ ඇන්ඩ්‍රොයිඩ් යෙදුම් සංවර්ධනයේ ඒකාබද්ධ කිරීම සහ භාවිතා කරන්නේ කෙසේද යන්න නිරූපණය කරන්න.
ෂෝමු

'සමහර' කාලය ගෙවී ගොස් ඇති නමුත් ඔබ තවමත් පිළිතුරක් භාරගෙන නොමැත. ඔබට වඩාත්ම උපකාර කළ පිළිතුර තෝරා ගත හැකිද, එවිට මෙය පිළිතුර ලෙස සලකුණු කළ හැකිය.
ඩේවිඩ් 3103

දත්ත බන්ධන orang View Binding වෙනුවට අත්පොත findViewById
mochadwi

Answers:


1452

භාවිතය getView () හෝ ක්රියාත්මක සිට දැක්ම පරාමිතිය onViewCreatedක්රමය. එය කැබැල්ල සඳහා මූල දර්ශනය ලබා දෙයි ( onCreateView()ක්‍රමයෙන් ආපසු ලබා දුන් ) . මේ සමඟ ඔබට ඇමතිය හැකිය findViewById().

@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
    ImageView imageView = (ImageView) getView().findViewById(R.id.foo);
    // or  (ImageView) view.findViewById(R.id.foo); 

ලෙස getView()පසු පමණක් ක්රියා onCreateView(), ඔබ තුළ එය භාවිතා කළ නොහැකි onCreate()හෝ onCreateView()ක්රම මෙම අත්පිටපත පිළියෙල කිරීම.


324
සටහන: එය ක්‍රියාත්මක වන්නේ onCreateView () පසු පමණි. එබැවින් ඔබට මෙය onCreate () හි භාවිතා කළ නොහැක
දිමිත්‍රි සයිට්සෙව්

7
OnCreate නිවැරදි ස්ථානය නොවේ නම් මෙය ක්‍රියාත්මක කිරීම සඳහා මට අභිබවා යා හැකි කාර්යය කුමක්ද?
නිකෝ AD

16
ImageViewඋද්ධමනය වූ පිරිසැලසුමෙන් පැමිණෙන්නේ නම් මෙය උදව් නොකරයි - විස්තර සඳහා මගේ පිළිතුර බලන්න. එසේ නොමැතිනම් onCreateView මෙය කිරීමට සුදුසුම ස්ථානයයි @ N-AccessDev
MattJenko

25
මෙය කිරීමට හොඳම ස්ථානය onViewCreated ක්‍රමය
වාසි

37
onActivityCreated()ඔබගේ අදහස් වෙත යොමු සොයා ගැනීමට සහ ගබඩා කිරීමට නිර්දේශිත ස්ථානය එය බව ප්‍රලේඛනයේ සඳහන් වේ. ඔබ කළ යුතු ඔවුන්ට නැවත පිහිටුවීම මගින් මෙම ගබඩා යොමු පිරිසිදු nullදී onDestroyView()හෝ ඔබ කාන්දු වනු ඇත Activity.
Monstieur

623

ඔබට කැබැල්ලේ දෘෂ්ටිය වැඩි findViewById()කර Viewඑය නැවත ලබා දෙන ලෙස ඉල්ලා සිටිය යුතුය.

public View onCreateView(LayoutInflater inflater, 
                         ViewGroup container, 
                         Bundle savedInstanceState) {
     View view = inflater.inflate(R.layout.testclassfragment, container, false);
     ImageView imageView = (ImageView) view.findViewById(R.id.my_image);
     return view;
}

4
ඔබ V.findViewById (R.id.someid) කරන විට, නිසැකවම එය ක්‍රියාත්මක වන්නේ උද්ධමනය වූ දර්ශනයේ ඇති සියලුම විජට් සඳහා පමණි. ඔහු උද්ධමනය කිරීමට උත්සාහ කරන රූපය දර්ශනය උද්ධමනයට පිටතින් තිබේ නම් කුමක් කළ යුතුද?
රවුනාක්

18
එවිට රූපය "අයිති" සහ උද්ධමනය ඇති පන්තියට එයට පොදු ප්‍රවේශය ලබා දිය යුතුය. එය ඉතා නරක පුරුද්දකි. කොටස් වලට ප්‍රවේශය තිබිය යුත්තේ ඒවායේ පිරිසැලසුමෙහි ඇති UI මූලද්‍රව්‍යයන්ට පමණි.
ලෙෆල්මේනියා

1
ඔබගේ කේතයේ යම් දෝෂයක් ඇති බව පෙනේ (පසුබිම් නූලකින් UI යාවත්කාලීන කිරීම), මගේ නොවේ.
ලෙෆල්මේනියා

1
ස්තූතියි, එය ප්‍රයෝජනවත් විය. සම්බන්ධයක් නැති අදහසක් ලෙස: ඔබේ කේතයේ ජාවා නම් කිරීමේ සම්මුතීන්ට ඇලී සිටීමට උත්සාහ කරන්න. "V" ජාවා හි විචල්ය නාමයක් ලෙස නොපෙනේ.
altumano

3
මෙය නිවැරදි පිළිතුර විය යුතුය. පිළිගත් තැනැත්තා ඔබ හැර යයි NullPointerException.
මචාඩෝ

132

Fragmentපංතිය ඇතුළත ඔබට onViewCreated () අභිබවා යන ක්‍රමය ලැබෙනු ඇත, එහිදී ඔබ සැමවිටම ඔබේ අදහස් ආරම්භ කළ යුතුය. මෙම ක්‍රමයේදී ඔබට දර්ශන වස්තුවක් භාවිතා කර ඔබේ අදහස් සොයාගත හැකිය:

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    view.findViewById(R.id.yourId).setOnClickListener(this);

    // or
    getActivity().findViewById(R.id.yourId).setOnClickListener(this);
}

සෑම විටම මතක තබා ගන්න onViewCreated(), ඔබ ශුන්‍ය හෝ ක්‍රමයෙන් ආපසු එන්නේ නම් එම ක්‍රමය ස්වයංක්‍රීයව නොකියනු super.onCreateView()ඇත onCreateView(). එය වූ අවස්ථාවක පෙරනිමි හඳුන්වනු ඇත ListFragmentලෙස ListFragmentනැවත FrameLayoutපෙරනිමියෙන්.

සටහන: සාර්ථකව ක්‍රියාත්මක කිරීමෙන් getView()පසු onCreateView()ඔබට පන්තියේ ඕනෑම තැනක කොටස් දර්ශනය ලබා ගත හැකිය . එනම්

getView().findViewById("your view id");

4
බොහෝ අය මෙම ප්‍රතිචාරය ඉහළ නංවා නොතිබීම ගැන මම පුදුම වෙමි - කොටස් මත සවන්දෙන්නන් සැකසීමට මෙය නිවැරදි ක්‍රමයයි ... සමහර විට මෙය API හි නව වර්ධනයක් විය.
සොනී

භාවිතා කරමින් viewසම්මත onViewCreatedතවමත් හේතු NullPointerExceptionනමුත් භාවිතා getActivity()හොඳයි. කිසියම් අදහසක් ඇයි?
dVaffection

VdVaffection සමහර විට ඔබ onCreateView () හි ජීවන චක්‍රීය ක්‍රමයේ ශුන්‍ය නොවන දර්ශනයක් ලබා නොදීම විය හැකිය. දැන් getActivity නම්, ඔබේ ක්‍රියාකාරකම් වලින් අදහස් ලබා ගන්නේ කැබැල්ලට වඩා ප්‍රධාන දසුන රඳා පවතින්නේ ඔබ පසු කරන හැඳුනුම්පත මත ය. කරුණාකර පරීක්ෂා කරන්න ඔබ onCreateView වෙතින් ශුන්‍ය නොවන දර්ශනයක් ලබා දෙනවාද නැද්ද? එහෙනම් මට දන්වන්න.
අන්කුර් චෞද්රි

N අන්කුර් චෞද්රි මම onCreateViewක්‍රමයෙන් දර්ශනය නැවත ලබා ගනිමි . මම දැන් නිදොස්කරණය කර ඇති අතර එහි පිරිසැලසුමක් ඇති බව FrameLayoutපෙනේ (මගේ නඩුවේ ). එය නැවත ලබා දෙන මූලද්‍රව්‍යයක් සොයා ගැනීමට උත්සාහ කරන විට එය පැවසේ null. එය සිදුවන්නේ ඇයි?
dVaffection

VdVaffection ඔබට කරුණාකර ඔබේ පන්තියේ කොටස් හා අනුරූප පිරිසැලසුම බෙදා ගත හැකිය.
අන්කූර් චෞද්රි

66

මෙය පරණ ප්‍රශ්නයක් බව මට වැටහී ඇත, නමුත් පවතින පිළිතුර අපේක්‍ෂා කළ යුතු යමක් ඉතිරි කරයි.

අවශ්‍ය වන්නේ කුමක්ද යන්න ප්‍රශ්නය පැහැදිලි නැත imageView- අප එය දර්ශනය ලෙස ආපසු යවනවාද, නැතහොත් හුදෙක් පසුකාලීනව යොමු කිරීමක් ඉතිරි කරන්නේද?

කෙසේ හෝ ImageViewඋද්ධමනය වූ පිරිසැලසුමෙන් පැමිණෙන්නේ නම්, මෙය කිරීමට නිවැරදි ක්‍රමය වනුයේ:

public class TestClass extends Fragment {
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.testclassfragment, container, false);
        ImageView imageView = (ImageView)v.findViewById(R.id.my_image);
        return v;
    }
}

1
එසේනම් ඔබ ListFragment වෙතින් imageView යාවත්කාලීන කරන්නේ කෙසේද? මේ සඳහා FragmentManager අවශ්‍ය වේද? වෙනත් වචන වලින් කිවහොත්, වෙනම පංතියක onListItemClick වෙතින් විස්තරාත්මක කොටසකින් රූප දර්ශනය යාවත්කාලීන කරන්නේ කෙසේද?
Whyoz

1
ඔබට අවශ්‍ය නම් රූප දර්ශනය සඳහා කොතැනක හෝ සඳහනක් සුරකිනු ඇත. ListFragment හි, රූපය ලැයිස්තු අයිතමයක ඇතැයි උපකල්පනය කරමින්, ඔබ සාමාන්‍යයෙන් ඔබේ ඇඩැප්ටරයේ getView ක්‍රමයේ ලැයිස්තු දර්ශන අයිතමයේ setTag / getTag ක්‍රම සමඟ විමර්ශන දරන්නෙකු සාදනු ඇත - මෙය කරන්නේ කෙසේද යන්නට බොහෝ උදාහරණ ඇත.
මැට්ජෙන්කෝ

48

පළමුවෙන්ම කොටස් දර්ශනය ලබාගෙන මෙම දර්ශනයෙන් ඔබේ රූප දර්ශනය ලබා ගන්න.

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.testclassfragment, container, false);
    ImageView imageView = (ImageView) view.findViewById(R.id.my_image);
    return view;
}

ඉතින්, කැබැල්ලක onCreate ක්‍රමය ප්‍රයෝජනවත් වේද?
සුනාස්

onCreateView කැබැල්ල හා සම්බන්ධ දර්ශන ධූරාවලිය නිර්මාණය කර නැවත ලබා දෙයි. කැබැල්ල මුලින් නිර්මාණය කිරීම සඳහා නිර්මාණය කරන්න. ඇත්ත වශයෙන්ම, එය මෙම ක්‍රම වලින් ඔබ ලියන දේ මත රඳා පවතී.
xevincent

හරි, නමුත් onCreate හි විචල්‍යය ප්‍රකාශ කරන්නේ කෙසේද? දර්ශනය onCreateView ක්‍රමය තුළ ඇති බැවිනි.
සුනාස්

C සුනාසේ ඔබ කවදා හෝ onCreate ක්‍රමයෙන් මෙය කරන්නේ කෙසේදැයි සොයාගෙන තිබේද?
StuStirling

1
මම එකඟයි. මෙම පිළිතුර විසඳුම ලෙස සලකුණු කළ යුතුය.
බොරිස් කාර්ලොෆ්

26

ඔබට එය onActivityCreatedක්‍රමයෙන්ද කළ හැකිය.

public void onActivityCreated(Bundle savedInstanceState) { 
      super.onActivityCreated(savedInstanceState);
}

ඔවුන් මෙහි කරන ආකාරයටම: http://developer.android.com/reference/android/app/Fragment.html (API මට්ටම 28 හි ඉවත් කර ඇත)

getView().findViewById(R.id.foo);

සහ

getActivity().findViewById(R.id.foo);

හැකි ය.



18

Fragmentපංතිය ඇතුළත අපට onViewCreated()අභිබවා යන ක්‍රමයක් ලබා ගත හැකි අතර එහිදී අප සැමවිටම අපගේ අදහස් ආරම්භ කළ යුතුය view. මෙම වස්තුව භාවිතා කිරීමෙන් අපගේ අදහස් පහත පරිදි සොයාගත හැකිය:

class MyFragment extends Fragment {
    private ImageView imageView;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        return inflater.inflate(R.layout.my_fragment_layout, container, false);
    }

    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

        //initialize your view here for use view.findViewById("your view id")
        imageView = (ImageView) view.findViewById(R.id.my_image);
    }
}

17

ඔබට සියලු දර්ශන උද්ධමනය වූ විගසම හැඳින්වෙන onViewCreated () අභිබවා යා හැකිය. ඔබේ කැබැල්ලේ සාමාජික Viewවිචල්‍යයන් පිරවීම සඳහා සුදුසුම ස්ථානය එයයි. මෙන්න උදාහරණයක්:

class GalleryFragment extends Fragment {
    private Gallery gallery;

    (...)

    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
        gallery = (Gallery) view.findViewById(R.id.gallery);
        gallery.setAdapter(adapter);
        super.onViewCreated(view, savedInstanceState);
    }
}

15

GetView () ක්‍රමය OnCreate හා සමාන ක්‍රම වලින් පිටත කොටස් මත ක්‍රියා නොකරයි.

ඔබට ක්‍රම දෙකක් තිබේ, දර්ශනය oncreate හි ශ්‍රිතයට යොමු කරන්න (එයින් අදහස් කරන්නේ ඔබට ඔබේ කාර්යයන් ක්‍රියාත්මක කළ හැක්කේ දර්ශනය නිර්මාණය වූ විට පමණි) හෝ දර්ශනය විචල්‍යයක් ලෙස සකසන්න:

private View rootView;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
    Bundle savedInstanceState) {
    rootView = inflater.inflate(R.layout.fragment_contatos, container, false);
}

public void doSomething () {
    ImageView thumbnail = (ImageView) rootView.findViewById(R.id.someId);
}

12

1) පළමුවෙන්ම කැබැල්ලේ පිරිසැලසුම පිරික්සන්න, එවිට ඔබට findviewbyId භාවිතා කළ හැකිය.

View view = inflater.inflate(R.layout.testclassfragment, container, false);
             ImageView imageView = (ImageView) view.findViewById(R.id.my_image);
             return view;

10
EditText name = (EditText) getView().findViewById(R.id.editText1);
EditText add = (EditText) getView().findViewById(R.id.editText2);  

9

භාවිත

imagebutton = (ImageButton) getActivity().findViewById(R.id.imagebutton1);

imageview = (ImageView) getActivity().findViewById(R.id.imageview1);

එය ක්‍රියාත්මක වනු ඇත


9

findViewById()දර්ශනය ඇමතීමට එකඟ විය .

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View V = inflater.inflate(R.layout.testclassfragment, container, false);
    ImageView imageView = (ImageView) V.findViewById(R.id.my_image);

    return V;
}

9

සටහන :

API මට්ටම 26 සිට, findViewById හි ප්‍රති return ලය එහි නැවත පැමිණීමේ වර්ගය සඳහා අනුමාන කිරීම් භාවිතා කරන බැවින් ඔබට විශේෂයෙන් විකාශනය කිරීමට අවශ්‍ය නොවේ.

දැන් ඔබට සරලවම කළ හැකිය,

public View onCreateView(LayoutInflater inflater, 
                         ViewGroup container, 
                         Bundle savedInstanceState) {
     View view = inflater.inflate(R.layout.testclassfragment, container, false);
     ImageView imageView =  view.findViewById(R.id.my_image); //without casting the return type
     return view;
}

1
විස්තර කර නැති දෙයක් මට උදව් කළා.
shaurya uppal

8

API මට්ටම 11 හි ඇති ලියකියවිලි වලට අනුව

පසුපසට යොමු කිරීම http://developer.android.com/reference/android/app/Fragment.html

කෙටි කේතය

/**
 * The Fragment's UI is just a simple text view showing its
 * instance number.
 */
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.hello_world, container, false);
    View tv = v.findViewById(R.id.text);
    ((TextView)tv).setText("Fragment #" + mNum);
    tv.setBackgroundDrawable(getResources().getDrawable(android.R.drawable.gallery_thumb));
    return v;
}

8

භාවිතා getView()ප්රතිලාභ එම අත්පිටපත පිළියෙල කිරීමේ දැක්ම, ඔබ ඇමතිය හැකි findViewById()ද බුද්ධාගම දැක්ම ඕනෑම දැක්ම අංගයක් ප්රවේශ.


3
දැක්ම ක්‍රියාකාරකම නොවේ
ස්ටීව් එම්

7

මෙය මට ප්‍රයෝජනවත් වන පරිදි මෙය උත්සාහ කරන්න

public class TestClass extends Fragment {
    private ImageView imageView;

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.testclassfragment, container, false);
        findViews(view);
        return view;
    }

    private void findViews(View view) {
        imageView = (ImageView) view.findViewById(R.id.my_image);
    }
}

ඔව්, මෙහි මෙම කේතය හරි. ඔබගේ සංස්කරණය අනෙකට නොවේ.
OneCricketer

@ cricket_007 හරි ඔබට මාව දැකිය හැක්කේ කාටද?
බිපින් භාරතී

මට කණගාටුයි මට ඔබේ ඉංග්‍රීසි තේරුම් ගත නොහැක, නමුත් දැන් සියල්ල නිවැරදි ය. මට ඔබට පෙන්වීමට කිසිවක් නැත.
OneCricketeer

5

මෙය ක්‍රියාත්මක කිරීමට ඇති හොඳම ක්‍රමය පහත පරිදි වේ:

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

rootView = inflater.inflate(R.layout.testclassfragment, container, false);
        ImageView imageView = (ImageView) rootView.findViewById(R.id.my_image);
        return rootView
}

මේ ආකාරයට, xml පිරිසැලසුමෙහි අර්ථ දක්වා ඇති සෑම පාලනයක් සඳහාම rootView භාවිතා කළ හැකි අතර කේතය මේ ආකාරයෙන් වඩා පිරිසිදු වේ.

මෙය උපකාරී වේ යැයි සිතමි :)


මම හිතුවේ මෙය සිදුවිය හැකි බවයි, නමුත්, එය ක්‍රියාත්මක වූයේ නැත
මයික් බ්‍රයන් ඔලිවෙරා

5

1) ඔබේ පිරිසැලසුම් ගොනුව ප්‍රකාශ කරන්න.

public View onCreateView(LayoutInflater inflater,ViewGroup container, 
                                 Bundle savedInstanceState) {
    return inflate(R.layout.myfragment, container, false);
}

2) ඉන්පසු, ඔබේ දර්ශනයේ හැඳුනුම්පත ලබා ගන්න

@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    TextView nameView = (TextView) view.findViewById(R.id.textview1);
}

4

ග්‍රේඩ්ල් ඇටසැකිලි ප්ලගිනය භාවිතා කරන්න , එය ඔබගේ පිරිසැලසුමට අදාළව ස්වයංක්‍රීයව දර්ශන දරන්නාගේ පන්ති ජනනය කරනු ඇත.

public class TestClass extends Fragment {
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        MyLayout myLayout = new MyLayout(inflater, container, false);
        myLayout.myImage.setImageResource(R.drawable.myImage);
        return myLayout.view;
    }
}

දැන් ImageViewඔබගේ my_layout.xmlගොනුවේ ප්‍රකාශයක් ඇතැයි උපකල්පනය කළහොත්, එය ස්වයංක්‍රීයව ඔබ වෙනුවෙන් මගේ ලේයූට් පන්තිය ජනනය කරනු ඇත.


4

මේක උත්සාහ කරන්න:

View v = inflater.inflate(R.layout.testclassfragment, container, false);
ImageView img = (ImageView) v.findViewById(R.id.my_image);

return v;

4

උත්සාහ කරන්න

private View myFragmentView;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
{
myFragmentView = inflater.inflate(R.layout.myLayoutId, container, false);
myView = myFragmentView.findViewById(R.id.myIdTag)
return myFragmentView;
}

ක්ෂේත්‍රයට හේතුවක් නැත. ඔබට සැමවිටම getView()පසුව ඇමතිය හැකිය
OneCricketeer

3

ඔබේ කැබැල්ල තුළ ඔබේ ක්‍රමයට ඇතුල් වන ක්‍රියාකාරකම් වස්තුවfindViewById() සමඟ ඔබට ඇමතිය හැකිය .public void onAttach(Activity activity)

උදාහරණයක් ලෙස ක්‍රියාකාරකම විචල්‍යයකට සුරකින්න:

තුළ ඛණ්ඩවල පන්ති : private Activity mainActivity; තුළ onAttach()ක්රමය: this.mainActivity=activity;

අවසාන වශයෙන් සෑම සොයාගැනීමේ දර්ශනයක්ම වයිරස් හරහා ක්‍රියාත්මක කරන්න: mainActivity.findViewById(R.id.TextView);


3

OnViewCreated නමින් තවත් එක් ක්‍රමයක් තිබේ.

@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    ImageView imageView = (ImageView) view.findViewById(R.id.imageview1);
}

2

OnCreateView ක්‍රමය තුළ

1) පළමුව ඔබට එකතු කිරීමට අවශ්‍ය පිරිසැලසුම / දැක්ම වැඩි කළ යුතුය. රේඛීය සැකැස්ම

LinearLayout ll = inflater.inflate(R.layout.testclassfragment, container, false);

2) එවිට ඔබට ඔබේ රූප දර්ශන හැඳුනුම්පත පිරිසැලසුමෙන් සොයාගත හැකිය

ImageView imageView = (ImageView)ll.findViewById(R.id.my_image);

3) උද්ධමනය පිරිසැලසුම නැවත ලබා දෙන්න

return ll;

මෙය ලෙෆල්මේනියාගේ පිළිතුරට සමාන වේ.
Reti43

2

ඔබ දර්ශනය අවුලුවාලිය යුතුයි

public class TestClass extends Fragment {

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.testclassfragment, container, false);
    ImageView imageView = (ImageView)v.findViewById(R.id.my_image);
    return v
}}

2

කොටස්වල අපට එම කවුළුවේ දර්ශනයක් අවශ්‍ය වන අතර එමඟින් මෙම කැබැල්ල පිළිබඳ ක්‍රියේට් වීව් එකක් සාදා ගනිමු.

ඉන්පසු දර්ශනය ලබාගෙන එම දර්ශන අංගවල සෑම දර්ශන හැඳුනුම්පතකටම පිවිසීමට එය භාවිතා කරන්න ..

  class Demo extends Fragment
    {
        @Override
        public View onCreateView(final LayoutInflater inflater,ViewGroup container, Bundle savedInstanceState)
        {
            View view =inflater.inflate(R.layout.demo_fragment, container,false);
            ImageView imageview=(ImageView)view.findViewById(R.id.imageview1);

            return view;
        }
    }

1) මෙය වෙනත් පිළිතුරු වලට එකතු කරන්නේ කුමක්ද? 2) ඔබ දෙවරක් පිළිතුරු දී ඇති බව පෙනේ
OneCricketer

2

පිරිසැලසුම් ප්‍රේරකය මෙහි පින්තූරයට පැමිණේ. පිරිසැලසුම් ප්‍රේරකය යනු ජාවා කේතයේ XML දර්ශන භාවිතා කිරීමට අපට හැකියාව ලබා දෙන පන්තියකි. එබැවින් ඔබට පහත දැක්වෙන කේතය සමඟ විචල්‍ය x හි මූල xml දර්ශනය උඩුගත කළ හැකිය. ඉන්පසු v භාවිතා කිරීමෙන් ඔබට මූල දර්ශනයේ ළමා දර්ශන සොයාගත හැකිය v.

public class TestClass extends Fragment {
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.testclassfragment, container, false);
    ImageView imageView = (ImageView)v.findViewById(R.id.my_image);
    return v;
    }
}

2

getView()වැඩ කරන්නේ සම්පුර්ණ වූ පසුව පමණි onCreateView(), එබැවින් මෙයින් ආයාචනා කරන්න onPostCreate():

@Override
public void onPostCreate(Bundle savedInstanceState) {
    super.onPostCreate(savedInstanceState);
    ImageView imageView = (ImageView) getView().findViewById(R.id.foo);
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.