簡體   English   中英

啟動新活動時出現空指針異常

[英]null pointer exception when starting new activity

好的,當我開始第三個活動時,我得到一個空指針異常。 這是LogCat消息:

12-28 04:38:00.350: ERROR/AndroidRuntime(776): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.acithium.main/com.acithium.rss.ShowDescription}: java.lang.NullPointerException
12-28 04:38:00.350: ERROR/AndroidRuntime(776):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2401)
12-28 04:38:00.350: ERROR/AndroidRuntime(776):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2417)
12-28 04:38:00.350: ERROR/AndroidRuntime(776):     at android.app.ActivityThread.access$2100(ActivityThread.java:116)
12-28 04:38:00.350: ERROR/AndroidRuntime(776):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794)
12-28 04:38:00.350: ERROR/AndroidRuntime(776):     at android.os.Handler.dispatchMessage(Handler.java:99)
12-28 04:38:00.350: ERROR/AndroidRuntime(776):     at android.os.Looper.loop(Looper.java:123)
12-28 04:38:00.350: ERROR/AndroidRuntime(776):     at android.app.ActivityThread.main(ActivityThread.java:4203)
12-28 04:38:00.350: ERROR/AndroidRuntime(776):     at java.lang.reflect.Method.invokeNative(Native Method)
12-28 04:38:00.350: ERROR/AndroidRuntime(776):     at java.lang.reflect.Method.invoke(Method.java:521)
12-28 04:38:00.350: ERROR/AndroidRuntime(776):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
12-28 04:38:00.350: ERROR/AndroidRuntime(776):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549)
12-28 04:38:00.350: ERROR/AndroidRuntime(776):     at dalvik.system.NativeStart.main(Native Method)
12-28 04:38:00.350: ERROR/AndroidRuntime(776): Caused by: java.lang.NullPointerException
12-28 04:38:00.350: ERROR/AndroidRuntime(776):     at com.acithium.rss.ShowDescription.onCreate(ShowDescription.java:48)
12-28 04:38:00.350: ERROR/AndroidRuntime(776):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1123)
12-28 04:38:00.350: ERROR/AndroidRuntime(776):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2364)
12-28 04:38:00.350: ERROR/AndroidRuntime(776):     ... 11 more

以下是我調用活動的代碼部分:

public void onItemClick(AdapterView parent, View v, int position, long id)
 {
     Log.i(tag,"item clicked! [" + feed.getItem(position).getTitle() + "]");

     Intent itemintent = new Intent(this,com.acithium.rss.ShowDescription.class);
     //Intent itemintent = new Intent();
     //itemintent.setClassName("com.acithium.main", "com.acithium.rss.ShowDescription");
     Bundle b = new Bundle();
     b.putString("title", feed.getItem(position).getTitle());
     b.putString("description", feed.getItem(position).getDescription());
     b.putString("link", feed.getItem(position).getLink());
     itemintent.putExtra("android.intent.extra.INTENT", b);

     startActivityForResult(itemintent,0);
 }

這里是一個名為的新活動類:

public class ShowDescription extends Activity 
{

    public void onCreate(Bundle icicle) 
    {
        super.onCreate(icicle);
        setContentView(R.layout.showdescription);

        String theStory = null;


        Intent startingIntent = getIntent();


        if (startingIntent != null)
        {
            Bundle b = startingIntent.getBundleExtra("android.intent.extra.INTENT");
            if (b == null)
            {
                theStory = "bad bundle?";
            }
            else
            {
                theStory =  b.getString("title") + "\n\n" + b.getString("description") + "\n\nMore information:\n" + b.getString("link");
            }
        }
        else
        {
            theStory = "Information Not Found.";

        }
        TextView db= (TextView) findViewById(R.id.storybox);
        db.setText(theStory);

        Button backbutton = (Button) findViewById(R.id.back);

        backbutton.setOnClickListener(new Button.OnClickListener() 
        {
            public void onClick(View v) 
            {
                finish();
            }
        });        
    }
}

這是showdescription.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <ScrollView android:layout_width="fill_parent"
            android:layout_height="fill_parent" >
            <LinearLayout 
                android:orientation="vertical"
                android:layout_width="fill_parent" 
                android:layout_height="fill_parent">
        <TextView  
             android:layout_width="fill_parent" 
                 android:layout_height="wrap_content" 
                 android:autoLink="all"
                 android:text="story goes here ...."
             android:id="@+id/storybox" />
        <Button
                android:layout_height="wrap_content" 
                android:text="Back"
            android:id="@+id/back" 
            android:layout_width="100px" 
            android:layout_marginLeft="100px"/>   
        </LinearLayout>
    </ScrollView>
</LinearLayout>

這是你的線索,來自堆棧跟蹤:

12-28 03:47:21.670: ERROR/AndroidRuntime(862): Caused by: java.lang.NullPointerException
12-28 03:47:21.670: ERROR/AndroidRuntime(862): at com.acithium.rss.ShowDescription.onCreate(ShowDescription.java:47)

ShowDescription.java中的第47行是什么?

如果我理解正確的代碼,你應該調用你為活動而不是活動設置的showdescription視圖的findViewById(),因為按鈕和textview似乎都是該視圖的一部分:

super.onCreate(icicle);
View showdescription = this.findViewById(R.id.showdescription);
setContentView(showdescription);

// ..

TextView db = (TextView)showdescription.findViewById(R.id.storybox);
db.setText(theStory);

Button backbutton = (Button)showdescription.findViewById(R.id.back);
backbutton.setOnClickListener(new Button.OnClickListener() 
{
    public void onClick(View v) 
    {
        finish();
    }
});

您的ShowDescription代碼中的47行是什么? 我認為你傳遞的是一個空游標。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM