添加TextView时Android RelativeLayout.addView()异常
当我在相对布局上调用addView()方法来添加textView时,出现了一个异常(添加TextView时Android RelativeLayout.addView()异常,android,Android,当我在相对布局上调用addView()方法来添加textView时,出现了一个异常(null指针) public class FormAddNewTaskActivity extends Activity { private final String TAG = FormAddNewTaskActivity.class.getCanonicalName(); private TaskLiteApplication taskLiteApplication; /* (n
null指针
)
public class FormAddNewTaskActivity extends Activity {
private final String TAG = FormAddNewTaskActivity.class.getCanonicalName();
private TaskLiteApplication taskLiteApplication;
/* (non-Javadoc)
* @see android.app.Activity#onCreate(android.os.Bundle)
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.form_add_task);
RelativeLayout rl = (RelativeLayout) findViewById(R.layout.form_add_task);
TextView tv = new TextView(taskLiteApplication);
tv.setText("blah blah");
tv.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));
rl.addView(tv); //null pointer exeption there
//set application context
taskLiteApplication = ((TaskLiteApplication)getApplicationContext());
//Spinner set list user
Spinner s = (Spinner) this.findViewById(R.id.spinnerUser);
//set list user
ArrayList<User> listUser = taskLiteApplication.getCtrlUser().getListUserFromDataBase();
//adapter user
UserSpinnerAdapter userSpinnerAdapter = new UserSpinnerAdapter(listUser , getApplicationContext());
//set adapter on the spinner
s.setAdapter(userSpinnerAdapter);
//set listener on add button task
ImageButton imageButtonAdd = (ImageButton) findViewById(R.id.imageButtonAdd);
imageButtonAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d(TAG, "add form new subtask");
}
});
}
}
公共类FormadNewTaskActivity扩展了活动{
private final String TAG=FormAddNewTaskActivity.class.getCanonicalName();
专用TaskLiteApplication TaskLiteApplication;
/*(非Javadoc)
*@see android.app.Activity#onCreate(android.os.Bundle)
*/
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.form\u add\u任务);
RelativeLayout rl=(RelativeLayout)findViewById(R.layout.form\u add\u task);
TextView tv=新的TextView(taskLiteApplication);
tv.setText(“诸如此类”);
tv.setLayoutParams(新的LayoutParams(LayoutParams.FILL\u PARENT,LayoutParams.WRAP\u CONTENT));
rl.addView(tv);//那里有空指针
//设置应用程序上下文
taskLiteApplication=((taskLiteApplication)getApplicationContext());
//微调器集列表用户
微调器s=(微调器)this.findViewById(R.id.spinnerUser);
//设置列表用户
ArrayList listUser=taskLiteApplication.getCtrlUser().getListUserFromDataBase();
//适配器用户
UserSpinnerAdapter UserSpinnerAdapter=新的UserSpinnerAdapter(listUser,getApplicationContext());
//在微调器上设置适配器
s、 setAdapter(userSpinnerAdapter);
//在添加按钮任务上设置侦听器
ImageButton ImageButtonAd=(ImageButton)findViewById(R.id.ImageButtonAd);
ImageButtonAd.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
Log.d(标记“添加表单新子任务”);
}
});
}
}
我的XML:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#fff" >
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<EditText
android:id="@+id/editTextGroupTaskName"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="@string/hint_task_name"
>
<requestFocus />
</EditText>
<Spinner
android:id="@+id/spinnerUser"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textViewDateDue"
android:layout_below="@+id/editTextGroupTaskName" />
<TextView
android:id="@+id/textViewDateDue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/spinnerUser"
android:text="@string/date_due"
android:textColor="#000"
android:textAppearance="?android:attr/textAppearanceMedium" />
<DatePicker
android:id="@+id/datePickerDateDue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/textViewDateDue" />
<TextView
android:id="@+id/textViewSubTask"
android:layout_below="@id/datePickerDateDue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/sub_task"
android:textColor="#000"
android:paddingTop="11dp"
android:paddingBottom="11dp"
android:textAppearance="?android:attr/textAppearanceMedium"
/>
<ImageButton
android:id="@+id/imageButtonAdd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_below="@id/datePickerDateDue"
android:src="@drawable/add" />
</RelativeLayout>
</ScrollView>
日志类别:
07-17 14:07:40.696: D/AndroidRuntime(338): Shutting down VM
...
07-17 14:07:40.707: E/AndroidRuntime(338): Caused by: java.lang.NullPointerException
07-17 14:07:40.707: E/AndroidRuntime(338): at android.view.View.<init>(View.java:1823)
07-17 14:07:40.707: E/AndroidRuntime(338): at android.widget.TextView.<init>(TextView.java:326)
07-17 14:07:40.707: E/AndroidRuntime(338): at android.widget.TextView.<init>(TextView.java:320)
07-17 14:07:40.707: E/AndroidRuntime(338): at android.widget.TextView.<init>(TextView.java:315)
07-17 14:07:40.707: E/AndroidRuntime(338): at activity.FormAddNewTaskActivity.onCreate(FormAddNewTaskActivity.java:38)
07-17 14:07:40.707: E/AndroidRuntime(338): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
07-17 14:07:40.696:D/AndroidRuntime(338):关闭虚拟机
...
07-17 14:07:40.707:E/AndroidRuntime(338):由以下原因引起:java.lang.NullPointerException
07-17 14:07:40.707:E/AndroidRuntime(338):在android.view.view.(view.java:1823)
07-17 14:07:40.707:E/AndroidRuntime(338):在android.widget.TextView。(TextView.java:326)
07-17 14:07:40.707:E/AndroidRuntime(338):在android.widget.TextView。(TextView.java:320)
07-17 14:07:40.707:E/AndroidRuntime(338):在android.widget.TextView。(TextView.java:315)
07-17 14:07:40.707:E/AndroidRuntime(338):at activity.FormAddNewTaskActivity.onCreate(FormAddNewTaskActivity.java:38)
07-17 14:07:40.707:E/AndroidRuntime(338):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)上
只有rl
可以在那里为空
也许可以代替RelativeLayout rl=(RelativeLayout)findViewById(R.layout.form\u add\u task)
,而使用RelativeLayout rl=(RelativeLayout)findViewById(R.id.RelativeLayout)findViewById(R.id.RelativeLayout\u layout)RelativeLayout rl=(RelativeLayout)findViewById(R.form\u add\u task)代码>
您正在向视图
查找器发送布局标记。将以下内容添加到XML中:
<RelativeLayout
android:id="@+id/form_add_task"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
并致电:
RelativeLayout rl=(RelativeLayout)findViewById(R.id.form\u add\u任务)代码>问题在于您的相对布局。尝试:
<RelativeLayout
android:id="@+id/myLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
请张贴您的日志,如果您这样做,我将能够很快帮助您。@JohnSatriano已张贴,谢谢!这应该可以纠正您的NullPointerException,是否有新的错误?同一个null指针异常,是的,我认为这也可以解决问题,weirdok得到了它,null指针异常来自我的应用程序上下文,因此它正在工作!!!谢谢;)很高兴听到!祝你的项目好运!谢谢你John是的,我需要一些,正如你所注意到的,我是Android SDK的初学者;)
RelativeLayout rl = (RelativeLayout) findViewById(R.id.myLayout);