如何获得该片段已被选择 [英] How to get which fragment has been selected
本文介绍了如何获得该片段已被选择的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我创建一个标签应用程序,使用的片段。
我已经成功地创建标签,但现在我需要在选择一个特定的片段来创建一个对象。例如当我选择 [设定]
我需要调用是在测试类
定义的函数。同样摧毁
//设定]
包com.example.sensorspositioningn;进口android.app.Fragment;
进口android.os.Bundle;
进口android.view.LayoutInflater;
进口android.view.View;
进口android.view.ViewGroup;公共类[设定扩展片段{ 公共查看onCreateView(LayoutInflater充气器,容器的ViewGroup,捆绑savedInstanceState){
//充气的布局该片段
返回inflater.inflate(R.layout.settingstab,集装箱,FALSE); }
}
下面是mainActivity的code:
保护无效的onCreate(捆绑savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.activity_main);
appContext = getApplicationContext(); //动作条
动作条动作条= 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设定] = actionbar.newTab()的setText(设置)。 片段Tab1F =新TAB1();
片段Tab2F =新TAB2();
片段Tab3F =新TAB3();
片段mSettingsFragment =新设定](); Tab1.setTabListener(新MyTabsListener(Tab1F));
Tab1.setTabListener(新MyTabsListener(Tab2F));
Tab1.setTabListener(新MyTabsListener(Tab3F));
SettingsTab.setTabListener(新MyTabsListener(mSettingsFragment)); actionbar.addTab(TAB1);
actionbar.addTab(TAB2);
actionbar.addTab(TAB3);
actionbar.addTab(设定]);
}
保护无效的onSaveInstanceState(捆绑outState){
super.onSaveInstanceState(outState);
outState.putInt(标签,getActionBar()getSelectedNavigationIndex());
}类MyTabsListener实现ActionBar.TabListener {
公共片段片段; 公共MyTabsListener(片段片段){
this.fragment =片段;
}
公共无效onTabReselected(标签选项卡,FragmentTransaction英尺){
Toast.makeText(MainActivity.appContext,!复选,Toast.LENGTH_LONG).show();
}
公共无效onTabSelected(标签选项卡,FragmentTransaction英尺){
ft.replace(R.id.fragment_container,片段);
}
公共无效onTabUnselected(标签选项卡,FragmentTransaction英尺){
ft.remove(片段);
}
}
解决方案
在你的 ActionBar.TabListener
你可以这样做 - (我假设你所需要的对象要在活动
)
类MyTabsListener实现ActionBar.TabListener {
公共片段片段; 公共MyTabsListener(片段片段){
this.fragment =片段;
}
公共无效onTabReselected(标签选项卡,FragmentTransaction英尺){
Toast.makeText(MainActivity.appContext,!复选,Toast.LENGTH_LONG).show();
}
公共无效onTabSelected(标签选项卡,FragmentTransaction英尺){
ft.replace(R.id.fragment_container,片段); 如果(片段的instanceof设定]){
//创建你的对象,调用你的函数
}
}
公共无效onTabUnselected(标签选项卡,FragmentTransaction英尺){
ft.remove(片段); 如果(片段的instanceof设定]){
//销毁你的对象
}
}
}
I am creating a tab application, using fragments.
I have successfully created tabs, but now I need to create an object when a specific fragment is selected. e.g. When I select SettingsTab
I need to call a function that is defined in Test class
. and similarly destroy
// 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);
}
}
Here is the code in 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);
}
}
解决方案
In your ActionBar.TabListener
you can do this - (I'm assuming that you need the object to be in the 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
}
}
}
这篇关于如何获得该片段已被选择的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文