0

我正在关注this教程。 我的应用程序中有3个选项卡。在tab3中我修改了一些视图(如按钮和EditText spinners等),代表这些更改我必须在tab2中执行一些操作。简单地说,你可以说我改变了tab3中的一些值,并且效果发生在tab2中。我知道如何做到这一点。我只是想,我的看法值变为复位每次tab2tab3如何保存/恢复状态视图片上标签更改

  • 我的问题之间切换时为默认值时是如何节省自己的看法状态。所以在恢复选项卡时,我必须得到我之前留下的视图的默认外观。

还有一件事我告诉你,我在做onCreateView()方法的所有工作。这是正确的方法。喜欢这个。

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
    Bundle savedInstanceState) { 

Toast.makeText(getActivity(), "onCreateView", Toast.LENGTH_SHORT) 
     .show(); 

if (container == null) { 

    return null; 
} 

View vi = inflater.inflate(R.layout.settings, container, false); 

btnInsert = (Button) vi.findViewById(R.id.btnInsert); 
btnInsert.setOnClickListener(this); 
btnPosition = (Button) vi.findViewById(R.id.btnPosition); 
btnPosition.setOnClickListener(this); 
txtPosition = (TextView) vi.findViewById(R.id.txtPosition); 
txtLogo = (TextView) vi.findViewById(R.id.txtLogo); 
imgLogoPreview = (ImageView) vi.findViewById(R.id.imgLogoPreview); 
imgLogoPreview.setOnClickListener(this); 
edTxtUserText = (EditText) vi.findViewById(R.id.edTxtPreview); 
relLogo = (RelativeLayout) vi.findViewById(R.id.RelLogo); 
relText = (RelativeLayout) vi.findViewById(R.id.RelText); 

logoWheel = (WheelView) vi.findViewById(R.id.wheelLogo); 

logoWheel.setAdapter(new ArrayWheelAdapter<String>(logoWheelList)); 
logoWheel.setVisibleItems(4); 
logoWheel.setCurrentItem(1); 
positionWheel = (WheelView) vi.findViewById(R.id.wheelPosition); 
positionWheel.setAdapter(new ArrayWheelAdapter<String>(
     positionWheelTextList)); 

// LogoWheel changed listener 
changedListenerLogo = new OnWheelChangedListener() { 
    public void onChanged(WheelView wheel, int oldValue, int newValue) { 
     if (!wheelScrolled) { 

     } 
    } 
}; 

logoWheel.addChangingListener(changedListenerLogo); 

// Wheel scrolled listener 
scrolledListenerLogo = new OnWheelScrollListener() { 

    public void onScrollStarts(WheelView wheel) { 
     wheelScrolled = true; 

    } 

    public void onScrollEnds(WheelView wheel) { 
     wheelScrolled = false; 
     btnInsert.setText(logoWheelList[wheel.getCurrentItem()] + ""); 
     wheel.setVisibility(View.INVISIBLE); 
     if (wheel.getCurrentItem() == 2) { 

      txtPosition.setVisibility(View.INVISIBLE); 
      btnPosition.setVisibility(View.INVISIBLE); 
      relText.setVisibility(View.INVISIBLE); 
      relLogo.setVisibility(View.INVISIBLE); 

     } else if (wheel.getCurrentItem() == 1) { 

      relText.setVisibility(View.VISIBLE); 
      relLogo.setVisibility(View.INVISIBLE); 
      txtPosition.setVisibility(View.VISIBLE); 
      btnPosition.setVisibility(View.VISIBLE); 
      btnPosition.setText("Top"); 
      positionWheel.setAdapter(new ArrayWheelAdapter<String>(
        positionWheelTextList)); 
      positionWheel.setVisibleItems(4); 
      positionWheel.setCurrentItem(1); 

     } else if (wheel.getCurrentItem() == 0) { 

      relLogo.setVisibility(View.VISIBLE); 
      relText.setVisibility(View.INVISIBLE); 
      txtPosition.setVisibility(View.VISIBLE); 
      btnPosition.setVisibility(View.VISIBLE); 
      btnPosition.setText("Top Left"); 
      positionWheel.setAdapter(new ArrayWheelAdapter<String>(
        positionWheelLogoList)); 
      positionWheel.setVisibleItems(4); 
      positionWheel.setCurrentItem(1); 

     } 
    } 
}; 

logoWheel.addScrollingListener(scrolledListenerLogo); 

// /////////////////////Positon Wheel Listners/////////// 

// LogoWheel changed listener 
changedListenerPosition = new OnWheelChangedListener() { 
    public void onChanged(WheelView wheel, int oldValue, int newValue) { 
     if (!wheelScrolled) { 

     } 
    } 
}; 

positionWheel.addChangingListener(changedListenerPosition); 

// Wheel scrolled listener 
scrolledListenerPosition = new OnWheelScrollListener() { 

    public void onScrollStarts(WheelView wheel) { 
     wheelScrolled = true; 

    } 

    public void onScrollEnds(WheelView wheel) { 
     wheelScrolled = false; 

     String btnStatus = btnInsert.getText().toString(); 
     if (btnStatus.equals("Logo")) { 
      btnPosition.setText(positionWheelLogoList[positionWheel 
        .getCurrentItem()] + ""); 

     } else if (btnStatus.equals("Text")) { 
      btnPosition.setText(positionWheelTextList[positionWheel 
        .getCurrentItem()] + ""); 
     } 

     wheel.setVisibility(View.INVISIBLE); 

    } 
}; 

positionWheel.addScrollingListener(scrolledListenerPosition); 

return vi; 

}

  • 在什么时候,我必须保存状态和在什么时候我应该找回savedstates?

  • 请告诉我如何以简单的语言实现片段的生命周期。

我也试过saveInstance()片段的方法。但不叫。

感谢

+0

请告诉我如何以简单的语言实现片段的生命周期。 – 2013-02-23 08:15:13

+1

更好地使用ActionBar标签作为[描述在这里](http://developer.android.com/guide/topics/ui/actionbar.html#Tabs)。 – 2013-02-23 08:19:35

+0

你能否澄清一下,你是否想要保留tab3在视线之外发生的任何变化,并且可以通过tab2修改* tab *,*或者想要设置tab3返回默认状态进入视野? – Kerry 2013-02-23 08:20:02

回答

1

如果我理解你正确地然后this可能是有用的。而不是每次你可以隐藏和显示它们时重新创建碎片。

这当然会保留你的碎片,所以可能只有你做了它,你有几个标签。这样做的好处是,

  1. 您不必担心保存数据并重新创建片段
  2. 变化是可立即向用户只要相关选项卡中选择。