내 레이아웃에 TextViews를 추가하고 있으며 화면 방향이 바뀌면 계속 유지하려고합니다.오리엔테이션 변경 후보기 복원
다음 코드를 시도했지만 작동하지 않습니다. java.lang.IllegalStateException :
에 의해 발생 :
public class DetailsActivity extends Activity { private HashMap<View, TextView> views = new HashMap<View, TextView>();; @Override public Object onRetainNonConfigurationInstance() { return views; } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(R.layout.layout44); findViewById(R.id.layout44_11).setOnLongClickListener(onLongClickListener); ... HashMap<View, TextView> data = (HashMap<View, TextView>)this.getLastNonConfigurationInstance(); if (data == null) { System.out.println("is null"); } else { for(View key : data.keySet()) { ViewGroup parent = (ViewGroup) key; System.out.println(key + " " + data.get(key)); System.out.println(parent.getChildCount()); System.out.println("child: " + parent.getChildAt(0));; parent.removeView(data.get(key)); data.get(key).setText("asd"); data.get(key).setVisibility(View.VISIBLE); parent.addView(data.get(key)); } System.out.println("-------------------"); } } private View.OnLongClickListener onLongClickListener = new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { ViewGroup parent = (ViewGroup) v; if(parent != null) { TextView tv = new TextView(getApplicationContext()); tv.setText("TextView"); views.put(parent, tv); parent.addView(tv); } return false; } }; }
나는 예외를 받고 있어요 지정된 아이 이미 부모가. 먼저 부모의 부모 인 에서 removeView()를 호출해야합니다.
왜? 내가 도대체 뭘 잘못하고있는 겁니까? 그것을 해결하는 방법?
내 레이아웃에 TextViews를 추가하고 있으며 화면 방향이 바뀌면 계속 유지하려고합니다. >>>> 어쨌든 그들은 화면에 남아 있습니다. 정확히 원하는 것은 무엇입니까 ?? –
첨부 된 코드에서 볼 수 있듯이 레이아웃에 TextViews를 추가하고 있습니다. 화면 방향을 변경하면 사라집니다. 나는 그들을 지키고 싶다. 또한 세로와 가로의 두 가지 레이아웃이 있지만 오류의 원인인지는 알 수 없습니다. – Ziem