簡體   English   中英

使用getStringArray時java.lang.NullPointerException

[英]java.lang.NullPointerException when using getStringArray

我正在開發一個會生成寶藏列表的應用程序。

這是我的字符串數組,用於將列表存儲到:

String treasure[] = {"", "", "", "", "", "", "", "", "", "",
        "", "", "", "", ""} ;

這就是我填寫價值觀的方式

treasure[0] = coinvalue + " copper pieces";

這是我將已編譯列表發送到下一部分的位置:

Bundle treasurelist = new Bundle();
        treasurelist.putStringArray("loot", treasure);
        Intent a = new Intent(TreasureGen.this, Treasure_Results.class);
        a.putExtras(treasurelist);
        startActivity(a);

這是我在下一階段挑選清單的地方:

public class Treasure_Results extends ListActivity {
        String getTreasure[] ;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Bundle gettreasurelist = getIntent().getExtras();
        getTreasure = gettreasurelist.getStringArray("loot");
        setListAdapter(new ArrayAdapter<String>(Treasure_Results.this, android.R.layout.simple_list_item_1, getTreasure));


    }
}

這是我得到的錯誤代碼:

Caused by: java.lang.NullPointerException
            at com.giraffelitis.ptindustries.dungeonmasterassistant.Treasure_Results.onCreate(Treasure_Results.java:24)
            at android.app.Activity.performCreate(Activity.java:5431)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2269)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2363)
            at android.app.ActivityThread.access$900(ActivityThread.java:161)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1265)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:157)
            at android.app.ActivityThread.main(ActivityThread.java:5356)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
            at dalvik.system.NativeStart.main(Native Method)

當我單擊鏈接時,它會將我發送到此代碼行

getTreasure = gettreasurelist.getStringArray("loot");

因為這只是我嘗試用Java編寫代碼的第二天,所以我不知道該怎么辦...我瀏覽了各個論壇,試圖找到解決方案,但也有一些類似的問題,但是我找不到我的問題這些答案。

UPDATE

我嘗試了以下建議...這是適用於此功能的TreasureGen活動代碼。

roll.setOnClickListener(new View.OnClickListener() {

                public void onClick(View v) {
                    treasurecr = counter;
                    int d100;
                    int coinvalue;

                    String treasure[] = {"", "", "", "", "", "", "", "", "", "",
                            "", "", "", "", ""} ;
                    Bundle treasurelist = new Bundle();
                    treasurelist.putStringArray("loot", treasure);
                    Intent a = new Intent(TreasureGen.this, Treasure_Results.class);
                    a.putExtras(treasurelist);
                    startActivity(a);

                    Intent openStartPoint = new                   Intent("com.giraffelitis.ptindustries.TREASUREGEN2");
                    startActivity(openStartPoint);
                }
            });

這是我整個Treasure_Results活動

public class Treasure_Results extends ListActivity {
        String getTreasure[] ;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Bundle treasurelist = getIntent().getExtras();
        getTreasure = treasurelist.getStringArray("loot");
        System.out.println("getTreasure = " + getTreasure);
        setListAdapter(new ArrayAdapter<String>(Treasure_Results.this, android.R.layout.simple_list_item_1, getTreasure));

    }
    //@Override
    //public void onListItemClick(ListView l, View v, int position, long id) {
        // do something with the data
    //}
}

這是關於getTreasure數組中內容的錯誤日志

08-24 17:02:34.040  25764-25764/com.giraffelitis.ptindustries.dungeonmasterassistant I/System.out﹕ getTreasure = [Ljava.lang.String;@429bcae0

謝謝你的時間!

如果要在兩個活動之間傳輸數組字符串,則可以使用以下代碼(在您的初始活動中):

Intent intent = new Intent();
in.putExtra("loot", treasure);

同時,在您要處理數組的活動中:

Intent intent = getIntent();
String treasure[] = intent.getStringArrayExtra("loot");

暫無
暫無

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

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