如何从Android中的另一个类调用非静态变量?

时间:2019-07-18 12:17:00

标签: java android

请理解,我现在才开始编写代码,不到一周,而且我以前从未开发过任何应用程序。我只是在互联网上看如何做事,并尝试将所有事情混合在一起。 因此,我正在制作一个android应用程序,我需要从mysql数据库中获取通知。 我所做的是找到了一个PHP脚本,该脚本将mysql表中的数据转换为Json格式,以便可以通过我的应用程序读取它。 以下是我显示数据的部分: Mysql_display.java:

    private void loadIntoListView(String json) throws JSONException {
        JSONArray jsonArray = new JSONArray(json);
        String[] licences = new String[jsonArray.length()];
        for (int i = 0; i < jsonArray.length(); i++) {
            JSONObject obj = jsonArray.getJSONObject(i);
            licences[i] = obj.getString("licence_number");
        }
        ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, licences);
        listView.setAdapter(arrayAdapter);
    }

我想要在通知上同时显示此信息(许可证): MainActivity.java

    public void displayNotification(){


        NotificationCompat.Builder mBuilder =
                new NotificationCompat.Builder(this, CHANNEL_ID)
                        .setSmallIcon(R.drawable.ic_alarm)
                        .setContentTitle("Title")
                        .setContentText("Licences")
                        .setPriority(NotificationCompat.PRIORITY_DEFAULT)
                ;

        NotificationManagerCompat mNotifMgr = NotificationManagerCompat.from(this);
        mNotifMgr.notify( 1, mBuilder.build());

    }

2 个答案:

答案 0 :(得分:0)

给你一个答案:你不能。

像您已经声明过loadIntoListView那样声明的方法是private,并且声明的文件之外的任何东西都不能使用它(简单地说)。此外,即使与该方法在同一类中的某些东西也将无法访问licences数组,因为它仅是该方法的本地变量,而不是全局声明的。

这里的其他答案将描述您如何实现想要达到的目标,此答案只是为了使您了解自己无法直接实现。

答案 1 :(得分:-1)

你不能。为了直接从另一个类访问变量,必须将变量声明为静态,否则唯一的方法是创建一个对象并像myObject.variableName这样引用它。