【问题标题】:ForceClose error in android TabWidget applicationandroid TabWidget应用程序中的ForceClose错误
【发布时间】:2011-04-14 19:54:13
【问题描述】:

TAB 小部件应用程序中的强制关闭错误 我正在使用http://developer.android.com/resources/tutorials/views/hello-tabwidget.html 的教程来创建 TAB 视图。 我想在每个选项卡中显示不同的列表。我在单独的活动中创建了每个列表,并通过创建新的意图实例来调用它,然后将其传递给 setcontent(); 以下是 TabWidget.java 的代码

package com.TabWidget;

import android.app.TabActivity;
import android.content.Intent;
import android.content.res.Resources;
import android.os.Bundle;
import android.widget.TabHost;

public class TabWidget extends TabActivity {

    static final String[] COUNTRIES = new String[] {
        "Afghanistan", "Albania", "Algeria", "American Samoa", "Andorra",
        "Angola", "Anguilla", "Antarctica", "Antigua and Barbuda", "Argentina",
        "Armenia", "Aruba", "Australia", "Austria", "Azerbaijan",
        "Bahrain", "Bangladesh", "Barbados", "Belarus", "Belgium"
      };

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        TabHost mTabHost = getTabHost();
        Resources res = getResources(); 

        Intent aIntent = new Intent(this, a.class);
        Intent bIntent = new Intent(this, b.class);
        Intent cIntent = new Intent(this, c.class);

        mTabHost.addTab(mTabHost.newTabSpec("A").setIndicator("A", res.getDrawable(R.drawable.icon)).setContent(aIntent));
        mTabHost.addTab(mTabHost.newTabSpec("B").setIndicator("B", res.getDrawable(R.drawable.icon)).setContent(bIntent));
        mTabHost.addTab(mTabHost.newTabSpec("C").setIndicator("C", res.getDrawable(R.drawable.icon)).setContent(cIntent));

        mTabHost.setCurrentTab(1);
    }

}

A.java

package com.TabWidget;

import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class A extends Activity {

    static final String[] COUNTRIES = new String[] {
        "Afghanistan", "Albania", "Algeria", "American Samoa", "Andorra",
        "Angola", "Anguilla", "Antarctica", "Antigua and Barbuda", "Argentina",
        "Armenia", "Aruba", "Australia", "Austria", "Azerbaijan",
        "Bahrain", "Bangladesh", "Barbados", "Belarus", "Belgium"
      };

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        ListView list=(ListView)findViewById(R.id.countries);
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, COUNTRIES);
        list.setAdapter(adapter);
        setContentView(R.layout.tab1);
    }

}

主.xml

<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/tabhost"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
        <TabWidget
            android:id="@android:id/tabs"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" />
        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent">
            <include layout="@layout/tab1"/>      
            <include layout="@layout/tab2"/> 
            <include layout="@layout/tab3"/>
        </FrameLayout>
    </LinearLayout>
</TabHost>

我是 android 开发新手,对 UI 开发很感兴趣。 提前致谢。

【问题讨论】:

  • 阅读LogCat,可以找到强制关闭错误的原因

标签: android


【解决方案1】:

A.onCreate() 中,您尝试在使用setContentView() 设置任何内容之前先查找视图。因此,list 为空,您将在行获得NullPointerException (NPE)

list.setAdapter(adapter);

在 LogCat 中查看此内容,了解如何发现问题。 LogCat 是无价的工具。

【讨论】:

  • @devyani:将setContentView() 行移到findViewById() 之前的右侧。如果您尚未设置任何内容,则无法找到视图。
  • 非常感谢...它正在工作...:) 如果您不介意可以询问有关从数据库中检索数据的查询?
猜你喜欢
  • 1970-01-01
  • 2010-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多