在执行设置文本的活动中获取强制关闭错误

时间:2011-11-30 12:41:45

标签: java android xml eclipse

这是我得到的错误。您可以在下面看到受此会话影响的所有代码。我把意图放在哪里,我得到它,所涉及的类和参数。

    11-30 20:37:32.870: E/AndroidRuntime(809): FATAL EXCEPTION: main
    11-30 20:37:32.870: E/AndroidRuntime(809): java.lang.RuntimeException: Unable to start activity ComponentInfo{kfc.project/kfc.project.productdetail}: java.lang.NullPointerException
    11-30 20:37:32.870: E/AndroidRuntime(809):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
    11-30 20:37:32.870: E/AndroidRuntime(809):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
    11-30 20:37:32.870: E/AndroidRuntime(809):  at android.app.ActivityThread.access$1500(ActivityThread.java:117)
    11-30 20:37:32.870: E/AndroidRuntime(809):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
    11-30 20:37:32.870: E/AndroidRuntime(809):  at android.os.Handler.dispatchMessage(Handler.java:99)
    11-30 20:37:32.870: E/AndroidRuntime(809):  at android.os.Looper.loop(Looper.java:123)
    11-30 20:37:32.870: E/AndroidRuntime(809):  at android.app.ActivityThread.main(ActivityThread.java:3683)
    11-30 20:37:32.870: E/AndroidRuntime(809):  at java.lang.reflect.Method.invokeNative(Native Method)
    11-30 20:37:32.870: E/AndroidRuntime(809):  at java.lang.reflect.Method.invoke(Method.java:507)
    11-30 20:37:32.870: E/AndroidRuntime(809):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
    11-30 20:37:32.870: E/AndroidRuntime(809):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
    11-30 20:37:32.870: E/AndroidRuntime(809):  at dalvik.system.NativeStart.main(Native Method)
    11-30 20:37:32.870: E/AndroidRuntime(809): Caused by: java.lang.NullPointerException
    11-30 20:37:32.870: E/AndroidRuntime(809):  at kfc.project.productdetail.onCreate(productdetail.java:19)
    11-30 20:37:32.870: E/AndroidRuntime(809):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
    11-30 20:37:32.870: E/AndroidRuntime(809):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
    11-30 20:37:32.870: E/AndroidRuntime(809):  ... 11 more

This is the code of the java file


    package kfc.project;

    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.widget.EditText;
    import android.widget.TextView;

    public class productdetail extends Activity{

        @Override
        protected void onCreate(Bundle bundle) {
            // TODO Auto-generated method stub
            super.onCreate(bundle);
            setContentView(R.layout.productdetail);

            Bundle extras = getIntent().getExtras();

            String name = extras.getString("name");

            if (name != null) {
                TextView text1 = (TextView) findViewById(R.id.servingsize);
                text1.setText(name);
            }
            /*
            Intent intent = getIntent();
            String str = intent.getStringExtra("name");*/

        }





    }

This is the code for the xml file wherein the error goes comes in when i go to this page. It isnt about cleaning the project and the manifest as well cause it works when i delete the settext code 


    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
      android:scrollbarAlwaysDrawVerticalTrack="true"
      xmlns:android="http://schemas.android.com/apk/res/android"
      android:orientation="vertical"
      android:layout_width="match_parent"
      android:layout_height="wrap_content" android:gravity="top|center"
      android:background="@drawable/bg">

        <TableLayout
            android:id="@+id/tableLayout1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" 
            >

            <TableRow
                android:id="@+id/tableRow1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" >


            </TableRow>

            <TableRow
                android:id="@+id/tableRow2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" android:gravity="right">

                <Button
                    android:id="@+id/button1"      
                    android:background="@drawable/button2"
                    android:textColor="#FFFFFF"   
                    android:layout_width="wrap_content"
                    android:layout_height="fill_parent"
                    android:text="ADD TO MENU" android:gravity="right" android:paddingRight="4sp" android:paddingTop="10sp"/>



        <TableRow
            android:id="@+id/tableRow3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" android:gravity="left">

        </TableRow>

        <TableLayout
            android:id="@+id/tableLayout2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >

            <TableRow
                android:id="@+id/tableRow5"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" >

            </TableRow>

            <TableRow
                android:id="@+id/tableRow6"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" >

                <TextView
                    android:id="@+id/textView4"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:gravity="left"
                    android:text="Amount Per Serving: "
                    android:textAppearance="?android:attr/textAppearanceMedium" />

                <TextView
                    android:id="@+id/textView7"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="20"
                    android:textAppearance="?android:attr/textAppearanceMedium" />

            </TableRow>

            <TableRow
                android:id="@+id/tableRow7"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" >

                <TextView
                    android:id="@+id/textView5"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Calories:"
                    android:textAppearance="?android:attr/textAppearanceMedium" />

                <TextView
                    android:id="@+id/textView17"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="30"
                    android:textAppearance="?android:attr/textAppearanceMedium" />

            </TableRow>

            <ImageView
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:src="@android:drawable/divider_horizontal_dark"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:scaleType="fitXY"
        android:paddingLeft="5dp"
        android:paddingRight="5dp"
        android:paddingBottom="2dp"
        android:paddingTop="2dp" />

            <TableRow
                android:id="@+id/tableRow8"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" >

                <TableRow
                    android:id="@+id/tableRow14"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" >

                    <TextView
                        android:id="@+id/textView3"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:gravity="right"
                        android:text="% Daily Value:          "
                        android:textAppearance="?android:attr/textAppearanceMedium" />

                    <TextView
                        android:id="@+id/textView21"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="35"
                        android:textAppearance="?android:attr/textAppearanceMedium" />
                </TableRow>
            </TableRow>

        </TableLayout>

        <TableLayout
            android:id="@+id/tableLayout3"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >

            <TableRow
                android:id="@+id/tableRow9"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" >

                <TextView
                    android:id="@+id/textView8"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Total Fat:"
                    android:textAppearance="?android:attr/textAppearanceMedium" />

                <TextView
                    android:id="@+id/textView22"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="60"
                    android:textAppearance="?android:attr/textAppearanceMedium" />

            </TableRow>

            <TableRow
                android:id="@+id/tableRow10"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" >

                <TextView
                    android:id="@+id/textView9"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="       Saturated Fat:"
                    android:textAppearance="?android:attr/textAppearanceMedium" />

                <TextView
                    android:id="@+id/textView23"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="34"
                    android:textAppearance="?android:attr/textAppearanceMedium" />

            </TableRow>

            <TableRow
                android:id="@+id/tableRow11"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" >

                <TextView
                    android:id="@+id/textView10"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="       Trans Fat:"
                    android:textAppearance="?android:attr/textAppearanceMedium" />

                <TextView
                    android:id="@+id/textView24"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="53"
                    android:textAppearance="?android:attr/textAppearanceMedium" />

            </TableRow>

            <TableRow
                android:id="@+id/tableRow12"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" >

                <TextView
                    android:id="@+id/textView11"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Cholesterol:"
                    android:textAppearance="?android:attr/textAppearanceMedium" />

                <TextView
                    android:id="@+id/textView25"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="25"
                    android:textAppearance="?android:attr/textAppearanceMedium" />

            </TableRow>

            <TableRow
                android:id="@+id/tableRow13"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" >

                <TextView
                    android:id="@+id/textView12"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Sodium:"
                    android:textAppearance="?android:attr/textAppearanceMedium" />

                <TextView
                    android:id="@+id/textView26"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="10"
                    android:textAppearance="?android:attr/textAppearanceMedium" />

            </TableRow>

            <TableRow
                android:id="@+id/tableRow15"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" >

                <TextView
                    android:id="@+id/textView13"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Total Carbohydrate:"
                    android:textAppearance="?android:attr/textAppearanceMedium" />

                <TextView
                    android:id="@+id/textView27"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="200"
                    android:textAppearance="?android:attr/textAppearanceMedium" />

            </TableRow>

            <TableRow
                android:id="@+id/tableRow16"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" >

                <TextView
                    android:id="@+id/textView14"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="       Dietary Fiber:"
                    android:textAppearance="?android:attr/textAppearanceMedium" />

                <TextView
                    android:id="@+id/textView28"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="34"
                    android:textAppearance="?android:attr/textAppearanceMedium" />

            </TableRow>

            <TableRow
                android:id="@+id/tableRow17"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" >

                <TextView
                    android:id="@+id/textView15"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="       Sugars:"
                    android:textAppearance="?android:attr/textAppearanceMedium" />

                <TextView
                    android:id="@+id/textView29"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="16"
                    android:textAppearance="?android:attr/textAppearanceMedium" />

            </TableRow>

            <TableRow
                android:id="@+id/tableRow18"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" >

                <TextView
                    android:id="@+id/textView16"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Protein:"
                    android:textAppearance="?android:attr/textAppearanceMedium" />

                <TextView
                    android:id="@+id/textView30"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="40"
                    android:textAppearance="?android:attr/textAppearanceMedium" />

            </TableRow>
    <ImageView
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:src="@android:drawable/divider_horizontal_dark"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:scaleType="fitXY"
        android:paddingLeft="5dp"
        android:paddingRight="5dp"
        android:paddingBottom="2dp"
        android:paddingTop="2dp" />
    <TableRow
        android:id="@+id/tableRow24"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >
    </TableRow>

            <TableRow
                android:id="@+id/tableRow19"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" >

            </TableRow>

        </TableLayout>

        <TableLayout
            android:id="@+id/tableLayout4"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >

            <TableRow
                android:id="@+id/tableRow20"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" >

            </TableRow>

            <TableRow
                android:id="@+id/tableRow21"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" >

            </TableRow>

            <TableRow
                android:id="@+id/tableRow22"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" >

                <TextView
                    android:id="@+id/textView19"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Vitamin A: "
                    android:textAppearance="?android:attr/textAppearanceMedium" />
                            <TextView
                    android:id="@+id/textView31"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="40"
                    android:textAppearance="?android:attr/textAppearanceMedium" />

                <TextView
                    android:id="@+id/textView20"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="   Vitamin C: "
                    android:textAppearance="?android:attr/textAppearanceMedium" />
                            <TextView
                    android:id="@+id/textView32"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="30"
                    android:textAppearance="?android:attr/textAppearanceMedium" />

            </TableRow>

            <TableRow
                android:id="@+id/tableRow23"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" >

                <TextView
                    android:id="@+id/textView6"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Calcium: "
                    android:textAppearance="?android:attr/textAppearanceMedium" />
                            <TextView
                    android:id="@+id/textView33"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="35"
                    android:textAppearance="?android:attr/textAppearanceMedium" />

                <TextView
                    android:id="@+id/textView18"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="   Iron: "
                    android:textAppearance="?android:attr/textAppearanceMedium" />
                            <TextView
                    android:id="@+id/textView34"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="40"
                    android:textAppearance="?android:attr/textAppearanceMedium" />

            </TableRow>

            <TableRow
                android:id="@+id/tableRow25"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" >

            </TableRow>

        </TableLayout>

    </LinearLayout>

这是我放置额外内容的地方

    package kfc.project;

import java.util.ArrayList;

import android.app.Activity;
import android.app.ListActivity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Toast;

public class ProductListView extends ListActivity {

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

        final ProductList pl = new ProductList();

        //setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, PRODUCTS));
        setListAdapter(new ArrayAdapter<Product>(this, R.layout.list_item, pl.getList() ));

        ListView lv = getListView();
        lv.setTextFilterEnabled(true);

        lv.setOnItemClickListener(new OnItemClickListener() {

          public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

            // When clicked, show a toast with the TextView text
            Toast.makeText(getApplicationContext(), "View Product", Toast.LENGTH_SHORT).show();

            Product product = pl.getList().get(position);

            Intent intent = new Intent(ProductListView.this, productdetail.class);
            intent.putExtra("name",product.getName());
            intent.putExtra("calories", product.getCalories());
            intent.putExtra("serving size", product.getServingSize());
            intent.putExtra("fat", product.getFat());
            intent.putExtra("saturated fat", product.getSaturatedFat());
            intent.putExtra("trans fat", product.getTransFat());
            intent.putExtra("cholesterol", product.getCholesterol());
            intent.putExtra("sodium", product.getSodium());
            intent.putExtra("carbs", product.getCarbs());
            intent.putExtra("protein", product.getProtein());

            ProductListView.this.startActivity(intent);

            startActivity(new Intent("kfc.project.PRODUCTDETAIL"));
          }

        });

    }



    //TEST STRING ARRAY
    static String[] PRODUCTS = new String[] {
        "Chicken", "Rice", "Coke", "Chicken Burger"
    };



}

这是添加数组列表项的地方

    package kfc.project;

import java.util.ArrayList;

public class ProductList {
    ArrayList<Product> list;


    public ProductList (){
        list = new ArrayList<Product>();

        //CREATE PRODUCT HERE
        Product chicken;
        list.add(new Product("ChickenTest",99));    

        Product rice;
        list.add(new Product("RiceTest",11));
    }

    public String[] getNames (){
        int c = 0;
        int size = list.size() - 1;
        String[] names = new String[size];

        while (size >= c) {
            //names.add(list.get(c).getName());
            names[c] = list.get(c).getName();
            c++;
        }

        c = 0;

        return names;
    }

    public ArrayList<Product> getList (){
        return list;
    }

}

这是参数的代码

    package kfc.project;

public class Product {


    String name;
    int servingSize;
    int calories;
    int fat;
    int saturatedFat;
    int transFat;
    int cholesterol;
    int sodium;
    int carbs;
    int protein;


    public Product (String name, int servingSize, int calories, int fat, int saturatedFat, int transFat, int cholesterol, int sodium, int carbs, int protein){
        this.name=name;
        this.calories=calories;
        this.servingSize=servingSize;
        this.fat=fat;
        this.saturatedFat=saturatedFat;
        this.transFat=transFat;
        this.cholesterol=cholesterol;
        this.sodium=sodium;
        this.carbs=carbs;
        this.protein=protein;
    }

    public Product (String name, int servingSize){
        this.name=name;
        this.servingSize=servingSize;
    }

    public String getName() {
        return name;
    }

    public int getServingSize() {
        return servingSize;
    }

    public int getCalories() {
        return calories;
    }

    public int getFat() {
        return fat;
    }

    public int getSaturatedFat() {
        return saturatedFat;
    }

    public int getTransFat() {
        return transFat;
    }

    public int getCholesterol() {
        return cholesterol;
    }

    public int getSodium() {
        return sodium;
    }

    public int getCarbs() {
        return carbs;
    }

    public int getProtein() {
        return protein;
    }


}

4 个答案:

答案 0 :(得分:0)

extras变量为NULL

Bundle extras = getIntent().getExtras();
String name = extras.getString("name");

更新

首先,不需要这一行

startActivity(new Intent("kfc.project.PRODUCTDETAIL"));

其次,您需要来自getExtra()getIntent()的{​​{1}},而不是productdetail。 样本:

getExtras()

答案 1 :(得分:0)

Bundle extras = getIntent().getExtras();
String name = extras.getString("name");
如果intent中没有存储额外内容,则

getExtras()可能返回null。检查附加内容是否为空。

答案 2 :(得分:0)

你可能需要对额外内容进行空检查。

答案 3 :(得分:0)

只需删除此行

即可
startActivity(new Intent("kfc.project.PRODUCTDETAIL"));

它会在没有额外的情况下开始您的活动,导致您的额外内容为空