簡體   English   中英

如何將數組從java android活動類傳遞給普通的java類?

[英]How do I pass arrays from a java android activity class to a normal java class?

我是java的新手,在類之間傳遞數組時遇到問題。 我想將從主活動收集的數據傳遞給另一個正在進行計算的類。 當我嘗試將數組值打印到我的計算類中的調試日志時,我收到錯誤“java.lang.NullPointerException:嘗試從空數組中讀取”

這是我的計算課:

package com.example.pokerholdemcalculator;

import android.util.Log;

public class CardHandling {
private int[] usedCards;
private MainActivity ma;

CardHandling() {
    usedCards = new int[13];
    ma = new MainActivity();
    usedCards = ma.getPlayerCardContents();
}

public void printC () {
    for (int i = 0; i < 13; i++) {
        String card = Integer.toString(usedCards[i]);
        Log.d("CARDS", card);
    }
}
}

我的MainActivity類:

package com.example.pokerholdemcalculator;

import android.graphics.PorterDuff;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ImageButton;
import android.widget.ViewFlipper;

public class MainActivity extends AppCompatActivity {
private ViewFlipper viewFlipper;
private boolean[] playerCardFlag;
private ImageButton[] playerCard;
private int[] playerCardContents;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    playerCard = new ImageButton[13];
    playerCardFlag = new boolean[13];
    playerCardContents = new int[13];       
}

public void testing (View v) {
    printArr();
}

public void printArr() {
    CardHandling ch = new CardHandling();
    ch.printC();
}

public int[] getPlayerCardContents() {
    return playerCardContents;
}

這是來自控制台的錯誤消息:

Caused by: java.lang.NullPointerException: Attempt to read from null array
    at com.example.pokerholdemcalculator.MainActivity.getPlayerCardContents(MainActivity.java:70)
    at com.example.pokerholdemcalculator.CardHandling.<init>(CardHandling.java:12)
    at com.example.pokerholdemcalculator.MainActivity.printArr(MainActivity.java:64)
    at com.example.pokerholdemcalculator.MainActivity.testing(MainActivity.java:60)

我嘗試過以不同方式初始化但無法解決錯誤。

這里的主要問題是您的活動不能像這樣被引用:

ma = new MainActivity();
usedCards = ma.getPlayerCardContents();

想要做的就是在主要活動上啟動課程

CardHandling ch = new CardHandling();
ch.usedCard = getPlayerCardContents();

MainActivity擴展了AppCompatActivity,這意味着您的活動不是普通對象

暫無
暫無

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

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