当前位置: 首页 > 知识库问答 >
问题:

从类访问 Main活动到变量从其他类

邢飞昂
2023-03-14

在Mainactive类中,我无法访问gamePanel变量或对象。在程序中稍后的其他类中,它运行良好。我遇到了以下错误:

java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=100, result=-1, data=Intent { act=inline-data (has extras) }} to activity {com.example.camerademo3/com.example.camerademo3.MainActivity}:
Attempt to read from field 'java.util.ArrayList com.example.camerademo3.GamePanel.images2' on a null object reference

类主要活动:

public class MainActivity extends Activity {
    GamePanel gamePanel;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        //some code
        setContentView(new GamePanel(this));

        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        startActivityForResult(intent, 100);

        //some code
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        //some code

        if (requestCode == 100) {
            Bitmap captureImage = (Bitmap) data.getExtras().get("data");
            gamePanel.images.add(captureImage);  // no access here
        }

        //some code
    }
}

类游戏面板:


public class GamePanel extends SurfaceView implements SurfaceHolder.Callback {
    //some code

    protected ArrayList<Bitmap> images;

    public GamePanel(Context context) {
        super(context);
        images = new ArrayList<>();
    }

    //some code
}

共有1个答案

马华茂
2023-03-14

你没有把你的游戏面板存放在任何地方。我想你想这样做

gamePanel = new GamePanel(this)
setContentView(gamePanel)

否则,当你引用gamePanel时,它将为空,因为你从未设置它。

 类似资料:
  • 问题内容: 我希望我说的是我的话。我有这样的课: 和其他这样的类: 这是从其他类(在该示例代码中)访问和更改其值的正确方法吗,是否有更好或更合适的解决方案?请注意,这是具有方法的类。 问题答案: 从另一个类访问私有变量的正确方法是使用getter和setter方法。否则,您应该将该变量公开。 那是: 但是,直接返回私有数据是一种不好的做法- 允许外部代码修改您的私有状态。通常,您应该返回私有数据的

  • 问题内容: 我的班级有一个名为DataStorage的哈希图: 如何在另一个类中访问此HashMap中的数据? 问题答案: 将HashMap创建为实例变量,并提供一种将其访问类API的方法:

  • 我有3个活动A、B和C。A导致B,B导致C。我希望能够在A和B之间来回移动,但我希望在C开始后完成A和B。我知道如何在通过意图启动C时关闭B,但在启动C时如何关闭A?

  • 问题内容: 我有这个课: 有什么方法可以使用自变量访问静态变量?我宁愿这样做,因为长名称不可读。 问题答案: 使用。这对新旧样式类均适用。

  • 我正在尝试将一个字符串从topicRNG加载到changeXML。我以前在类之间加载过变量,但现在无法运行 首先,我有我的代码,我试图加载它。包装试验; 然后是我试图加载的代码, 当我从GenreDefiner加载int时,我把它设置成这样, 我尝试过“将公共静态字符串放入topicFinal”,但它给了我一个错误,当我将它放在“公共静态void main(String args[]){}”之外时

  • 问题内容: 我从很多地方都听说过,全局变量本来就是讨厌和邪恶的,但是当使用一些非面向对象的Javascript时,我看不到如何避免它们。说我有一个函数,它使用复杂的算法使用随机数和填充物来生成数字,但是我需要在其他函数(回调或其他函数)中继续使用该特定数,因此不能成为同一函数的一部分。 如果最初生成的数字是局部变量,则无法从那里访问它。如果函数是对象方法,我可以将数字设为属性,但是它们不是属性,并