2013-07-29 5 views
5

में गतिशील रूप से जोड़े गए दृश्य गायब हो जाते हैं मैंने बटन क्लिक से लेआउट में गतिशील रूप से जोड़े जाने के विचार बनाए हैं, लेकिन जब मैं डिवाइस परिदृश्य को घुमाता हूं, तो विचार गायब हो जाते हैं। क्या कोई मेरे कोड को देख सकता है और समझा सकता है कि इसे कैसे होने से रोकें।एंड्रॉइड

public class TestContainerActivity extends Activity implements OnClickListener { 

LinearLayout containerLayout; 
Button testButton; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_test_container); 

    testButton = (Button)findViewById(R.id.testContainerButton1); 
    testButton.setOnClickListener(this);   
    containerLayout = (LinearLayout)findViewById(R.id.testContainerLayout); 

} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.test_container, menu); 
    return true; 
} 


@Override 
public void onClick(View v) { 
    // TODO Auto-generated method stub 
    if(v==testButton){ 

     createNewLayout(); 

    } 
} 

public void createNewLayout(){ 

     LayoutInflater layoutInflater = (LayoutInflater) getBaseContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View addView = layoutInflater.inflate(R.layout.container, null); 
     TextView textviewTest = (TextView)addView.findViewById(R.id.containerTextView4); 
     textviewTest.setText("TextView"); 

     containerLayout.addView(addView); 

} 

} 

उत्तर

-1

TestContainerActivity गतिविधि

android:ConfigChanges="keyboardHidden|orientation" 
3

में निम्न पंक्ति जोड़ें में अपने Manifest.xml टैग इस लाइन जोड़ें:

यहाँ कोड है।

android:configChanges="keyboardHidden|orientation|screenSize" 

यह आपकी गतिविधि को अभिविन्यास परिवर्तन पर पुनर्निर्माण से बचने से बचाएगा।

1

अभिविन्यास परिवर्तन को रोकने के बजाय, नए अभिविन्यास में लेआउट को फिर से बनाने का प्रयास करना बेहतर है।

अपने ऑनक्रेट में जांचें कि कोई सहेजा गया उदाहरण है (अभिविन्यास परिवर्तन के परिणामस्वरूप) उदा।

if (savedInstanceState == null) { 
     //create new button layout if previously clicked 
} 
else { 
     //normal start 
} 

आपको कुछ मूल्यों को बनाए रखने की आवश्यकता हो सकती है (या तो साझा किए गए प्रीफ़्स या ऑनवेड इंस्टेंसस्टेट में)।

यह दृष्टिकोण अभिविन्यास को लॉक करने से अधिक कठिन है, लेकिन यह लंबे समय तक एक बेहतर दृष्टिकोण है और अनुसंधान प्रयास के लायक है।