android view和textview在充气和返回时的混淆
如果我尝试返回textview(tv),它会给我运行时错误,如果我返回view(v),它工作正常。有人能告诉我原因吗。您观察到运行时错误,因为Android Framework在您尝试将textview视图添加到活动的视图层次结构时引发了非法状态异常。换句话说,您正试图为已经有父视图(某种布局)的视图(TextView)设置新的父视图。Android框架不允许自动更改父级,并引发异常 尝试添加以下行-似乎这将帮助您:android view和textview在充气和返回时的混淆,android,Android,如果我尝试返回textview(tv),它会给我运行时错误,如果我返回view(v),它工作正常。有人能告诉我原因吗。您观察到运行时错误,因为Android Framework在您尝试将textview视图添加到活动的视图层次结构时引发了非法状态异常。换句话说,您正试图为已经有父视图(某种布局)的视图(TextView)设置新的父视图。Android框架不允许自动更改父级,并引发异常 尝试添加以下行-似乎这将帮助您: package com.test1; import android.app.
package com.test1;
import android.app.Activity;
import android.app.ExpandableListActivity;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.BaseExpandableListAdapter;
import android.widget.TextView;
public class Test1Activity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
c1 c1obj = new c1();
setContentView(c1obj.m1());
}
public class c1
{
public View m1()
{
LayoutInflater i = (LayoutInflater) Test1Activity.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = i.inflate(R.layout.main, null);
TextView tv = (TextView) v.findViewById(R.id.textView1);
tv.setText("Hello world !!!");
return v;
}
}
}
你为什么这么做?这对我来说毫无意义。只需在
onCreate(…)中使用setContentView(R.layout.main)
。这是一个小片段,它复制了我在实际项目中遇到的确切错误。但如果您看到代码,我没有设置任何视图,我将直接在setcontentview中设置textview。方法setcontentview将尝试设置您通过参数传递到activity视图层次结构内部结构的视图
ViewGroup vg = (ViewGroup)tv.getParent();
vg.removeView(tv);