2013-07-29 73 views
5

我創建了從按鈕單擊動態添加到佈局的視圖,但是當旋轉設備環境時,視圖消失。有人可以看看我的代碼,並解釋如何阻止這種情況發生。動態添加的視圖在Android中的方向上消失

下面是代碼:

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

最好嘗試在新方向上重新創建佈局,而不是僅僅阻止方向更改。

在您的onCreate中,檢查是否存在保存的實例(作爲方向更改的結果),例如

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

您可能需要保留一定的值(無論是在共享偏好設置或onSavedInstanceState)。

這種方法比鎖定方向更困難,但從長遠來看這是一種更好的方法,值得研究工作。

相關問題