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. 變化是可立即向用戶只要相關選項卡中選擇。