gpt4 book ai didi

android - 如何获取选择了哪个 fragment

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:02:44 26 4
gpt4 key购买 nike

我正在使用 fragment 创建一个选项卡应用程序。

我已经成功创建了选项卡,但现在我需要在选择特定 fragment 时创建一个对象。例如当我选择 SettingsTab 时,我需要调用在 Test class 中定义的函数。并同样销毁

// SettingsTab
package com.example.sensorspositioningn;

import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class SettingsTab extends Fragment {

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.settingstab, container, false);

}
}

这是mainActivity中的代码:

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);


appContext = getApplicationContext();

//ActionBar
ActionBar actionbar = getActionBar();
actionbar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

ActionBar.Tab Tab1= actionbar.newTab().setText("Tab1");
ActionBar.Tab Tab2= actionbar.newTab().setText("Tab2");
ActionBar.Tab Tab3= actionbar.newTab().setText("Tab3");
ActionBar.Tab SettingsTab = actionbar.newTab().setText("Settings");

Fragment Tab1F= new Tab1();
Fragment Tab2F= new Tab2();
Fragment Tab3F= new Tab3();
Fragment mSettingsFragment = new SettingsTab();

Tab1.setTabListener(new MyTabsListener(Tab1F));
Tab1.setTabListener(new MyTabsListener(Tab2F));
Tab1.setTabListener(new MyTabsListener(Tab3F));
SettingsTab.setTabListener(new MyTabsListener(mSettingsFragment));

actionbar.addTab(Tab1);
actionbar.addTab(Tab2);
actionbar.addTab(Tab3);
actionbar.addTab(SettingsTab);


}
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("tab", getActionBar().getSelectedNavigationIndex());
}

class MyTabsListener implements ActionBar.TabListener {
public Fragment fragment;

public MyTabsListener(Fragment fragment) {
this.fragment = fragment;
}


public void onTabReselected(Tab tab, FragmentTransaction ft) {
Toast.makeText(MainActivity.appContext, "Reselected!", Toast.LENGTH_LONG).show();
}


public void onTabSelected(Tab tab, FragmentTransaction ft) {
ft.replace(R.id.fragment_container, fragment);




}


public void onTabUnselected(Tab tab, FragmentTransaction ft) {
ft.remove(fragment);


}
}

最佳答案

在您的 ActionBar.TabListener 中,您可以这样做 - (我假设您需要该对象位于 Activity 中)

class MyTabsListener implements ActionBar.TabListener {
public Fragment fragment;

public MyTabsListener(Fragment fragment) {
this.fragment = fragment;
}


public void onTabReselected(Tab tab, FragmentTransaction ft) {
Toast.makeText(MainActivity.appContext, "Reselected!", Toast.LENGTH_LONG).show();
}


public void onTabSelected(Tab tab, FragmentTransaction ft) {
ft.replace(R.id.fragment_container, fragment);

if(fragment instanceof SettingsTab) {
// Create your object, call your function
}
}


public void onTabUnselected(Tab tab, FragmentTransaction ft) {
ft.remove(fragment);

if(fragment instanceof SettingsTab) {
// Destroy your object
}
}
}

关于android - 如何获取选择了哪个 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17210674/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com