我需要一个解决方案! addView()中的错误我不知道答案.....
我想使用之前的视图
更改布局我需要帮助!
图表---- https://github.com/PhilJay/MPAndroidChart
流程:com.example.tiago.alsrm_android,PID:23337 java.lang.IllegalStateException:指定的子级已有父级。您必须首先在孩子的父母上调用removeView()。 在android.view.ViewGroup.addViewInner(ViewGroup.java:3784) 在android.view.ViewGroup.addView(ViewGroup.java:3637) 在android.view.ViewGroup.addView(ViewGroup.java:3582) 在android.view.ViewGroup.addView(ViewGroup.java:3558) 在com.example.tiago.alsrm_android.Fragment.EDA_Fragment.onConfigurationChanged(EDA_Fragment.java:174)
公共类EDA_Fragment扩展了Fragment {
private Intent intentService;
private Chart chart = null;
private View fragmentRootContainer;
@Override
public View onCreateView(final LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
if(fragmentRootContainer == null) {
fragmentRootContainer = inflater.inflate(R.layout.activity_exam, container, false);
if (chart == null)
chart = new Chart((LineChart) fragmentRootContainer.findViewById(R.id.chart), EDA, 1023f, 1f);
return fragmentRootContainer;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
setRetainInstance(true);
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
LayoutInflater inflater = LayoutInflater.from(getActivity());
ViewGroup viewGroup = (ViewGroup) getView();
viewGroup.removeAllViewsInLayout();
// Checks the orientation of the screen
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
View view = inflater.inflate(R.layout.activity_exam, null);
LineChart lineChart = (LineChart)view.findViewById(R.id.chart);
lineChart.addView(chart.getChart());
} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
View view = inflater.inflate(R.layout.activity_exam, null);
LineChart lineChart = (LineChart)view.findViewById(R.id.chart);
lineChart.addView(chart.getChart());
}
}
}
答案 0 :(得分:0)
------ --------第一
在AndroidManifest中添加此内容
android:name=".Activity.EDA_Activity"
android:configChanges="orientation"
------第二----------
in layout PORTRAIT add this -> android:orientation="vertical"
in layout LANDSCAPE add this -> android:orientation="horizontal"
--------第三-----------
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
LayoutInflater inflater = LayoutInflater.from(getActivity());
LinearLayout linearLayout = (LinearLayout) getView();
if(linearLayout != null)
linearLayout.removeAllViewsInLayout();
// Checks the orientation of the screen
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
ViewGroup parentViewGroup = (ViewGroup)chart.getChart().getParent();
if (parentViewGroup != null)
parentViewGroup.removeView(chart.getChart());
fragmentRootContainer = inflater.inflate(R.layout.activity_exam, linearLayout, true);
LineChart lineChart = (LineChart) fragmentRootContainer.findViewById(R.id.chart);
lineChart.addView(chart.getChart());
}
else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
ViewGroup parentViewGroup = (ViewGroup)chart.getChart().getParent();
if (parentViewGroup != null)
parentViewGroup.removeView(chart.getChart());
fragmentRootContainer = inflater.inflate(R.layout.activity_exam, linearLayout, true);
inflater.inflate(R.layout.activity_exam, linearLayout, false);
LineChart lineChart = (LineChart) fragmentRootContainer.findViewById(R.id.chart);
lineChart.addView(chart.getChart());
}
}