के साथ एंड्रॉइड घूर्णन वाला डबल टुकड़ा मैंने 2 टुकड़ों के बीच स्विच करने के लिए एक्शनबार के साथ एक साधारण एंड्रॉइड गतिविधि बनाई है। जब तक मैं डिवाइस को घुमाता हूं तब तक यह ठीक है। तथ्यों में, जब मैं घूमता हूं तो मुझे दूसरे पर एक टुकड़ा मिला है: पिछला सक्रिय एक और पहला वाला। क्यों? यदि घूर्णन मेरी गतिविधि को नष्ट कर देता है और फिर से बना देता है, तो मुझे 2 टुकड़े क्यों प्राप्त होते हैं?एक्शनबार
नमूना कोड:
गतिविधि
package rb.rfrag.namespace;
import android.app.ActionBar;
import android.app.ActionBar.Tab;
import android.app.Activity;
import android.os.Bundle;
public class RFragActivity extends Activity {
/** Called when the activity is first created. */
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Notice that setContentView() is not used, because we use the root
// android.R.id.content as the container for each fragment
// setup action bar for tabs
final ActionBar actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
//actionBar.setDisplayShowTitleEnabled(false);
Tab tab;
tab = actionBar.newTab()
.setText(R.string.VarsTab)
.setTabListener(new TabListener<VarValues>(
this, "VarValues", VarValues.class));
actionBar.addTab(tab);
tab = actionBar.newTab()
.setText(R.string.SecTab)
.setTabListener(new TabListener<SecFrag>(
this, "SecFrag", SecFrag.class));
actionBar.addTab(tab);
}
}
TabListener
package rb.rfrag.namespace;
import android.app.ActionBar;
import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.app.ActionBar.Tab;
public class TabListener<T extends Fragment> implements ActionBar.TabListener {
private Fragment mFragment;
private final Activity mActivity;
private final String mTag;
private final Class<T> mClass;
/** Constructor used each time a new tab is created.
* @param activity The host Activity, used to instantiate the fragment
* @param tag The identifier tag for the fragment
* @param clz The fragment's Class, used to instantiate the fragment
*/
public TabListener(Activity activity, String tag, Class<T> clz) {
mActivity = activity;
mTag = tag;
mClass = clz;
}
/* The following are each of the ActionBar.TabListener callbacks */
public void onTabSelected(Tab tab, FragmentTransaction ft) {
// Check if the fragment is already initialized
if (mFragment == null) {
// If not, instantiate and add it to the activity
mFragment = Fragment.instantiate(mActivity, mClass.getName());
ft.add(android.R.id.content, mFragment, mTag);
} else {
// If it exists, simply attach it in order to show it
ft.attach(mFragment);
}
}
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
if (mFragment != null) {
// Detach the fragment, because another one is being attached
ft.detach(mFragment);
}
}
}
यह पूरी तरह से काम किया। किसी भी सुराग के रूप में अगर यह चीजों को करने का "उचित" तरीका है? –
जब तक मुझे यह नहीं मिला, उसने मुझे पागल कर दिया ... इस जवाब के लिए बहुत बहुत धन्यवाद! (फिर भी यह विश्वास नहीं कर सकता कि Google उनके उदाहरण में इसे ठीक नहीं करेगा) – Patrick
दिलचस्प। केवल मैं चित्र में 'android.support.v4.view.ViewPager' का उपयोग करता हूं और परिदृश्य के दौरान दोनों टुकड़े प्रदर्शित करता हूं। दो बार घुमाएं और मुझे परिदृश्य में दो टुकड़े मिलते हैं। एक * एंड्रॉइड की तरह कुछ कहा जाता है: स्विचर: 2131099773: 1 * - मुझे पागल बनाता है। मुझे ज़ोंबी से छुटकारा पाने के लिए एक झटका मिलना है। – Martin