Search code examples
javaandroidxmlandroid-tabhost

Unable to instantiate activity ComponentInfo{ProductSimpleInfoActivity} NullPointerException


this is my manifest files:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.iadmo.dahan"
android:versionCode="1"
android:versionName="1.0"
android:installLocation="preferExternal"
 >
<uses-sdk
    android:minSdkVersion="14"
    android:targetSdkVersion="21" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission          android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INSTALL_PACKAGES" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<application
    android:allowBackup="true"
    android:name="com.iadmo.dahan.application.MyApplication"
    android:icon="@drawable/appicon"
    android:label="@string/app_name"
    android:theme="@style/AppTheme"
    >
    <activity
        android:name="com.iadmo.dahan.activity.WelcomeActivity"
        android:label="@string/app_name" 
        android:windowSoftInputMode="adjustPan|stateHidden"
        android:theme="@android:style/Theme.NoTitleBar"
        android:screenOrientation="portrait"
        android:configChanges="orientation|keyboardHidden"
        android:clearTaskOnLaunch="false"
        >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".activity.MainActivity" 
        android:screenOrientation="portrait"
        android:windowSoftInputMode="adjustPan|stateHidden"
        android:theme="@android:style/Theme.NoTitleBar"
        />
    <activity android:name=".activity.RecommendActivity"
        android:screenOrientation="portrait" 
        android:windowSoftInputMode="adjustPan|stateHidden"
        android:configChanges="orientation|keyboardHidden"
        android:theme="@android:style/Theme.NoTitleBar"
        />
    <activity android:name=".activity.PersonalActivity"
        android:screenOrientation="portrait" 
        android:theme="@android:style/Theme.NoTitleBar"
        />
    <activity android:name=".activity.LoginActivity"
        android:screenOrientation="portrait" 
        android:theme="@android:style/Theme.NoTitleBar"
        />
    <activity android:name=".activity.RegisterActivity"
        android:screenOrientation="portrait" 
        android:theme="@android:style/Theme.NoTitleBar"
        />
    <activity android:name=".activity.DownloadedActivity"
        android:screenOrientation="portrait" 
        android:theme="@android:style/Theme.NoTitleBar"
        />
    <activity android:name=".activity.SortedActivity"
        android:screenOrientation="portrait" 
        android:windowSoftInputMode="adjustPan|stateHidden"
        android:theme="@android:style/Theme.NoTitleBar"
        />
    <activity android:name=".activity.ClassesActivity"
        android:screenOrientation="portrait" 
        android:windowSoftInputMode="adjustPan|stateHidden"
        android:theme="@android:style/Theme.NoTitleBar"
        />
    <activity android:name=".activity.SearchedActivity"
        android:screenOrientation="portrait" 
        android:theme="@android:style/Theme.NoTitleBar"
        />
    <activity android:name=".activity.ProductDetailsActivity"
        android:screenOrientation="portrait" 
        android:windowSoftInputMode="adjustPan|stateHidden"
        android:theme="@android:style/Theme.NoTitleBar"
        />
    <activity android:name=".activity.PerClassActivity"
        android:screenOrientation="portrait" 
        android:windowSoftInputMode="adjustPan|stateHidden"
        android:theme="@android:style/Theme.NoTitleBar"
        />
    <activity android:name=".activity.ProductCommentActivity"
        android:screenOrientation="portrait" 
        android:theme="@android:style/Theme.NoTitleBar"
        />
    <activity android:name=".activity.ProductSimpleInfoActivity"
        android:screenOrientation="portrait" 
        android:theme="@android:style/Theme.NoTitleBar"
        />
    <activity android:name=".activity.CommentDetailsActivity"
        android:screenOrientation="portrait" 
        android:theme="@android:style/Theme.NoTitleBar"
        />
    <activity android:name=".activity.DownloadingActivity"
        android:screenOrientation="portrait" 
        android:theme="@android:style/Theme.NoTitleBar"
        />
    <service android:name="com.iadmo.dahan.service.DownloadService"/>
</application>

and this is the xml for layout of productdetailsActivity:

public class ProductDetailsActivity extends TabActivity {
private TabHost mHost;
private String appId, userId;
private ListView per_class_simple_info;
private List<BaseInfo> datas;
private DetailsAdapter adapter;
private TextView txtview1, txtview2;
private Button back;
private TextView title_name;
private Dialog dialog;

@SuppressWarnings("deprecation")
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_productdetail);
    MyApplication.getInstance().addActivity(this);
    Bundle bundle = getIntent().getExtras();
    appId = bundle.getString("appId");
    userId = AppUtil.getString(getApplicationContext(), "userid", "");
    initCompanents();
    initViews();
    initDatas();
    Intent intent = new Intent();
    intent.setAction("GOODID");
    intent.putExtras(bundle);
    getApplicationContext().sendBroadcast(intent);
    initEvents();
}

@SuppressWarnings("deprecation")
private void initViews() {
    back = (Button) findViewById(R.id.back);
    title_name = (TextView) findViewById(R.id.title_name);
    per_class_simple_info = (ListView) findViewById(R.id.per_class_simple_info);
    mHost = this.getTabHost();
    mHost.addTab(mHost.newTabSpec("mhost_job").setIndicator(txtview1)
            .setContent(new Intent(this,    ProductSimpleInfoActivity.class)));
    mHost.addTab(mHost.newTabSpec("mhost_company").setIndicator(txtview2)
            .setContent(new Intent(this, ProductCommentActivity.class)));
}

private void initCompanents() {
    txtview1 = new TextView(this);
    txtview1.setText("简介");
    txtview1.setTextColor(getResources().getColor(R.color.white));
    txtview1.setGravity(Gravity.CENTER);// 文字居中
    txtview1.setTextSize(15);// 字体大小
    txtview1.setPadding(15, 16, 15, 15);// 四周填充
    txtview1.setBackgroundResource(R.drawable.tabhost_bg);
    txtview2 = new TextView(this);
    txtview2.setText("评论");
    txtview2.setTextColor(getResources().getColor(R.color.black));
    txtview2.setGravity(Gravity.CENTER);// 居中
    txtview2.setTextSize(15);// 字体大小
    txtview2.setPadding(15, 16, 15, 15);// 填充
    txtview2.setBackgroundResource(R.drawable.tabhost_bg);

    LayoutParams param1 = new LayoutParams(
            android.view.ViewGroup.LayoutParams.FILL_PARENT,
            android.view.ViewGroup.LayoutParams.WRAP_CONTENT);
    param1.setMargins(0, 10, 0, 0);
    param1.weight = 1;// 权重
    txtview1.setLayoutParams(param1);
    LayoutParams param2 = new LayoutParams(
            android.view.ViewGroup.LayoutParams.FILL_PARENT,
            android.view.ViewGroup.LayoutParams.WRAP_CONTENT);
    param2.setMargins(0, 10, 0, 0);
    param2.weight = 1;// 权重
    txtview2.setLayoutParams(param2);
}

and this is the productSimpleInfoActivity's code:

public class ProductSimpleInfoActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_simpleinfo);
        MyApplication.getInstance().addActivity(this);
        initViews();
        registerReceivers();
        initEvents();
    }

this is the productDetail xml layout,i think this is right ,i tired it ,it worked,but today i tired again,it failed:

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >

        <TabWidget
            android:id="@android:id/tabs"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:gravity="center" 
            >
        </TabWidget>
        <View
            android:layout_width="fill_parent"
            android:layout_height="@dimen/s_5"
            android:background="@color/red_light" />
        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" >
        </FrameLayout>
    </LinearLayout>
    </TabHost>
</LinearLayout>

Solution

  • Try the following code.It hopefully works.

    main.xml file :
    <?xml version="1.0" encoding="utf-8"?>
    <TabHost xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
         android:id="@android:id/tabhost" >
    
    
         <LinearLayout 
            android:orientation="vertical"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:padding="5dp">
    
    
            <TabWidget 
            android:id="@android:id/tabs"     
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
           ></TabWidget>
    
            <FrameLayout
            android:id="@android:id/tabcontent"     
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" 
            android:padding="5dp"></FrameLayout>      
    
        </LinearLayout>
    
    </TabHost>
    

    In Class File add this code in your onCreate():

        setContentView(R.layout.main);
        Resources res = getResources();
    
        TabHost tabHost = getTabHost();
        TabHost.TabSpec spec;
        Intent intent;
    
        intent = new Intent().setClass(this, Personal.class);
        spec = tabHost.newTabSpec("personal").setIndicator("Personal").setContent(intent);
        tabHost.addTab(spec);