ฉันไม่พบsetTag(String tagName)
วิธีเช่นนี้ในFragment
ชั้นเรียน วิธีเดียวในการตั้งค่าFragment
แท็กที่ฉันได้พบคือการทำFragmentTransaction
และส่งชื่อแท็กเป็นพารามิเตอร์
นี่เป็นวิธีเดียวในการตั้งFragment
แท็กด้วยรหัสอย่างชัดเจนหรือไม่
ฉันไม่พบsetTag(String tagName)
วิธีเช่นนี้ในFragment
ชั้นเรียน วิธีเดียวในการตั้งค่าFragment
แท็กที่ฉันได้พบคือการทำFragmentTransaction
และส่งชื่อแท็กเป็นพารามิเตอร์
นี่เป็นวิธีเดียวในการตั้งFragment
แท็กด้วยรหัสอย่างชัดเจนหรือไม่
คำตอบ:
ใช่. ดังนั้นวิธีเดียวคือในเวลาทำธุรกรรมเช่นใช้add
, replace
หรือเป็นส่วนหนึ่งของรูปแบบ
ฉันพิจารณาสิ่งนี้ผ่านการตรวจสอบแหล่งที่มาของความเข้ากันได้ในขณะที่ฉันมองหาบางสิ่งที่คล้ายกันในอดีต
คุณสามารถตั้งค่าแท็กเป็นแฟรกเมนต์ด้วยวิธีนี้:
Fragment fragmentA = new FragmentA();
getFragmentManager().beginTransaction()
.replace(R.id.MainFrameLayout,fragmentA,"YOUR_TARGET_FRAGMENT_TAG")
.addToBackStack("YOUR_SOURCE_FRAGMENT_TAG").commit();
คุณสามารถระบุแท็กภายในไฟล์ xml โครงร่างกิจกรรมของคุณ
จัดหาandroid:tag attribute
สตริงที่ไม่ซ้ำ
เช่นเดียวกับที่คุณจะกำหนด ID ในเค้าโครง xml
android:tag="unique_tag"
คุณสามารถได้รับชิ้นส่วนทั้งหมดเช่นนี้:
สำหรับ v4 fragmets
List<Fragment> allFragments = getSupportFragmentManager().getFragments();
สำหรับ app.fragment
List<Fragment> allFragments = getFragmentManager().getFragments();
นี่คือวิธีที่ดีที่สุดที่ฉันได้พบ:
public class MainActivity extends AppCompatActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState == null) {
// Let's first dynamically add a fragment into a frame container
getSupportFragmentManager().beginTransaction().
replace(R.id.flContainer, new DemoFragment(), "SOMETAG").
commit();
// Now later we can lookup the fragment by tag
DemoFragment fragmentDemo = (DemoFragment)
getSupportFragmentManager().findFragmentByTag("SOMETAG");
}
}
}
ฉันรู้ว่าเมื่อ 6 ปีที่แล้ว แต่ถ้าใครประสบปัญหาเดียวกันฉันก็ทำได้:
สร้างFragment
คลาสที่กำหนดเองด้วยฟิลด์แท็ก:
public class MyFragment extends Fragment {
private String _myTag;
public void setMyTag(String value)
{
if("".equals(value))
return;
_myTag = value;
}
//other code goes here
}
ก่อนที่จะเพิ่มส่วนในsectionPagerAdapter
ชุดแท็กเช่นเดียวกับที่:
MyFragment mfrag= new MyFragment();
mfrag.setMyTag("TAG_GOES_HERE");
sectionPagerAdapter.AddFragment(mfrag);
คุณสามารถเพิ่มแท็กเป็นคุณสมบัติสำหรับFragment
อาร์กิวเมนต์ มันจะถูกเรียกคืนโดยอัตโนมัติหากชิ้นส่วนถูกทำลายและสร้างแล้วโดยOS
ตัวอย่าง : -
final Bundle args = new Bundle();
args.putString("TAG", "my tag");
fragment.setArguments(args);