BaseAdapter를 확장하는 CustomAdapter 클래스를 크레이 티드했습니다. 따라서 클래스를 Fragment로 확장 할 수 없습니다.FragmentManager 클래스를 non-Fragment 클래스로 사용하는 방법
CustomAdapter
클래스에서 나는 사용자 정의 ListView
을 항목과 함께 만듭니다. Uppon 버튼을 클릭하여 다른 Fragment를 가고 싶습니다.
CustomAdapter 클래스가 MyLocationFragment.java
에서 초기화되고 있습니다. 이 Fragment에서는 사용자가 ListView에서 항목을 선택하도록 사용자에게 제안하고, 사용자가 TextView/Item 옆에있는 Button을 클릭하면 HomeScreenFragment로 이동하여 TextView에서 저장된 값으로 무언가를 수행하려고합니다. (같은 위치에) 속했다.
MyLocationFragment (이 경우 중요 부품, 그렇지 않으면 너무 큰) : (리스너가 오면 부분적으로)
if(adminMode) {
ArrayList<String> data = new ArrayList<>(Arrays.asList(locationsArray));
CustomAdapter adapter = new CustomAdapter(data, getActivity());
// Assign adapter to ListView
listView.setAdapter(adapter);
}
CustomAdapter.java :
holder.localData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
fMyLocation = new MyLocationFragment();
// Store selected values into Strings and pass them to setter method
String selectedLocation = (String) holder.items.getText().toString();
String [] locationsArrayValues = v.getResources().getStringArray(R.array.locations_array_value);
String selectedLocationUrl = locationsArrayValues[position];
fMyLocation.setInputLocation(selectedLocation);
fMyLocation.setInputLocationUrl(selectedLocationUrl);
FragmentActivity myContext;
// On Item Click, go to the HomeScreen
Fragment fragment = new HomeScreenFragment();
FragmentManager fManager = myContext.getSupportFragmentManager();
FragmentTransaction fTransaction = fManager.beginTransaction();
fTransaction.replace(R.id.fragment_holder, fragment);
fTransaction.commit();
}
});
위 코드 결과는 Cannot Resolve getFragmentManager();
non-Fragment 클래스에서 HomeScreenFragment
으로 갈 수 있습니까?
도움이 될 것입니다.
어댑터에서 호출 한 활동에 전달할 오브젝트를 요구하는 메소드를 작성할 수 있습니다. 메소드는 어댑터에서 호출하여 활동의 새 부분을 시작합니다. 안드로이드 4.2 이상에서 중첩 된 단편 지원이 있지만 앱에서 그런 방식으로 약 30 %의 안드로이드 사용자를 차단합니다. –
정확하게 이해했는지 확실하지 않습니다. 그러나 더 쉬운 방법은 없습니까? ListViews 많이 사용되는, 그들은 내부 조각 또는 무엇을 사용하지 않는 것을 의미합니까? 이에 대한 자습서를 찾을 수 없습니다. ListView에서 Button Click을 클릭하고 다른 Fragment를 사용하여 값을 저장하고 싶습니다. –
지원 라이브러리를 사용하여 getChildFragmentManager에 액세스 할 수도 있지만 개인적으로 GUI에서 시각적으로 무엇인가를 실제로 중첩하는 경우에만 중첩 된 조각을 사용해야한다고 생각합니다. 사실, 위의 방법은 1. 활동에 대한 메소드 생성 2. Adapter에 액티비티 전달 (SoftReference 사용) 3. call activity(). yourMethod (yourObject) 4. 새 액티비티/프래그먼트 열기 –