반응형
Fragments에서 setArguments () 및 getArguments () 메서드를 사용하는 방법은 무엇입니까?
두 개의 조각이 있습니다 : (1) Frag1 (2) Frag2.
Frag1
bundl = new Bundle();
bundl.putStringArrayList("elist", eList);
Frag2 dv = new Frag2();
dv.setArguments(bundl);
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.the_fragg,dv);
ft.show(getFragmentManager().findFragmentById(R.id.the_fragg));
ft.addToBackStack(null);
ft.commit();
Frag2 에서이 데이터를 어떻게 얻습니까?
클래스에 getArguments()
존재 하는 메서드가 있습니다 Fragment
.
의 메소드를 호출 getArguments()
하십시오 .Frag2
onCreateView()
public class Frag2 extends Fragment {
public View onCreateView(LayoutInflater inflater,
ViewGroup containerObject,
Bundle savedInstanceState){
//here is your arguments
Bundle bundle=getArguments();
//here is your list array
String[] myStrings=bundle.getStringArray("elist");
}
}
예 : 데이터 추가 :-
Bundle bundle = new Bundle();
bundle.putString("latitude", latitude);
bundle.putString("longitude", longitude);
bundle.putString("board_id", board_id);
MapFragment mapFragment = new MapFragment();
mapFragment.setArguments(bundle);
예 : 데이터 가져 오기 오기 :-
String latitude = getArguments().getString("latitude")
Frag1에서 :
Bundle b= new Bundle();
b.putStringArray("arrayname that use to retrive in frag2",StringArrayObject);
Frag2.setArguments(b);
Frag2에서 :
Bundle b=getArguments();
String [] stringArray=b.getStringArray("arrayname that passed in frag1");
간단합니다.
프리미티브 이외의 객체를 보내려는 저와 같은 사람들이 프래그먼트에서 그런 변수화 된 생성을 만들 수 있기 때문에 프래그먼트에 부여됩니다. 이것은 항상 저에게 적합합니다.
조각을 올바른 방법으로 인스턴스화하십시오!
getArguments()
setArguments()
메서드는 정적 메서드를 사용하여 Fragment를 인스턴스화 할 때 매우 유용합니다.
즉Myfragment.createInstance(String msg)
어떻게하나요?
조각 코드
public MyFragment extends Fragment {
private String displayMsg;
private TextView text;
public static MyFragment createInstance(String displayMsg)
{
MyFragment fragment = new MyFragment();
Bundle args = new Bundle();
args.setString("KEY",displayMsg);
fragment.setArguments(args); //set
return fragment;
}
@Override
public void onCreate(Bundle bundle)
{
displayMsg = getArguments().getString("KEY"): // get
}
@Override
public View onCreateView(LayoutInlater inflater, ViewGroup parent, Bundle bundle){
View view = inflater.inflate(R.id.placeholder,parent,false);
text = (TextView)view.findViewById(R.id.myTextView);
text.setText(displayMsg) // show msg
returm view;
}
}
인스턴스를 생성하는 동안 문자열을 전달한다고 가정 해 보겠습니다. 이것이 당신이 할 방법입니다.
MyFragment.createInstance("This String will be shown in textView");
더 읽어보기
1) 왜 Myfragment.getInstance (String msg)가 new MyFragment (String msg)보다 선호됩니까?
2) 프래그먼트의 샘플 코드
onCreateView () 메서드 에서 getArguments 호출
반응형
'IT' 카테고리의 다른 글
dd / mm / yyyy 형식의 페이지를 Datetime으로 변환 (0) | 2020.08.31 |
---|---|
AppCompatActivity에서 기호 ViewModelProviders를 확인할 수 없습니다. (0) | 2020.08.31 |
Emacs, 이전 창으로 전환 (0) | 2020.08.31 |
JavaScript는 유형이 지정되지 않은 언어입니까? (0) | 2020.08.31 |
목록에있는 개체 수 계산 (0) | 2020.08.31 |