我在android工作,我想制作一个scrollview。 这是我的代码:
package com.pericent;
import android.app.Activity;
import android.app.TabActivity;
import android.content.Intent;
import android.content.res.Resources;
import android.os.Bundle;
import android.util.Log;
import android.view.ViewGroup.LayoutParams;
import android.widget.HorizontalScrollView;
import android.widget.LinearLayout;
import android.widget.TabHost;
import android.widget.TextView;
public class HelloTabWidget extends Activity {
private String TAG="HelloTabWidget";
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.v(TAG,"i am just before everything");
HorizontalScrollView hr=new HorizontalScrollView(this);
hr.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));
LinearLayout layout=new LinearLayout(this);
LinearLayout mainlayout=new LinearLayout(this);
mainlayout=(LinearLayout)findViewById(R.id.upper1);
layout.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));
Log.v(TAG,"i am just after the declarations");
for(int i=0;i<100;i++){
TextView txt=new TextView(this);
txt.setText("Text " + i );
layout.addView(txt);
}
Log.v(TAG,"i am after the for loop");
hr.addView(layout);
mainlayout.addView(hr);//<<---this is creating NullPointerException
setContentView(R.layout.cecking);
Log.v(TAG,"i am after the everything");
}
}
这是我的cecking.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/upper1">
</LinearLayout>
每当我运行程序时,都会发生此错误: -
Unable to start activity ComponentInfo{com.pericent/com.pericent.HelloTabWidget}: java.lang.NullPointerException
并在此行中发生错误: - mainlayout.addView(hr);
请帮我找出错误的原因。 提前谢谢。
答案 0 :(得分:1)
您没有为活动设置任何布局
以及你没有为该Activity充气check.xml。
这就是无法找到mainlayout并导致NullPointerException
的原因
试试这种方式:
checking.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/upper1">
</LinearLayout>
</LinearLayout>
然后在onCreate()
的{{1}}内设置您的布局
像这样:
Activity
答案 1 :(得分:0)
这可能是因为您尚未设置
.setLayoutParams(new Layout...
用于mainlayout,错误语句行对象。