【问题标题】:Problem with android studio and public classes/attributesandroid studio和公共类/属性的问题
【发布时间】:2021-01-05 06:01:25
【问题描述】:

我将在此处放置一个实际示例来说明正在发生的事情,因为现在我尝试解决问题已经有一段时间了,但没有任何结果。

这是我在不同活动或 java 文件中需要的那些方法/属性的公共类:

package com.mgs.bchat;

import android.content.Context;
import android.widget.Toast;

public class Util {
    public static final String LOG_TAG = "BChat MSG";
    public static final String SP_NAME = "BChatSharedPreferences";
    public static final String SAVED_NICKNAME = "BChatSPSavedNickname";
    public static final String INTENT_PARCELABLE = "BChatParcelableGeneric";
    public static final String INTENT_DEVICE_NAME = "BChatParcelableName";
    public static final String INTENT_DEVICE_MAC = "BChatParcelableMac";

    public static final int MESSAGE_STATE_CHANGE = 1;
    public static final int MESSAGE_READ = 2;
    public static final int MESSAGE_WRITE = 3;
    public static final int MESSAGE_DEVICE = 4;
    public static final int MESSAGE_TOAST = 5;
    public static final String DEVICE = "device_name";

    public static void SimpleToast(Context context, String msg)
    {
        Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();
    }

}

这是对其中一个成员变量的调用

package com.mgs.bchat;

import android.os.Handler;
import android.os.Handler.Callback;
import android.os.Message;
import android.view.View;
import android.widget.Toast;

import com.msg.bchat.Util;

import androidx.coordinatorlayout.widget.CoordinatorLayout;

import static com.mgs.bchat.Util.MESSAGE_WRITE;

public interface ChatHandler extends Handler.Callback {
    @Override
    public boolean handleMessage( Message message) {
        switch (message.what){
            case Util.MESSAGE_STATE_CHANGE:
                switch (message.arg1){
                    case ChatController.STATE_CONNECTED:
                        setStatus(getString(R.string.stateConnected)+ connectingDevice.getName());
                        break;
 
                       .
                       .
                       .
    
    }
}

我必须使用 class.attr 表示法或按属性导入,就像上面的那样

import static com.mgs.bchat.Util.MESSAGE_WRITE;

通过按 ALT+Enter 包含 MESSAGE_WRITE 时由 android studio 自动创建。

现在,MESSAGE_WRITE 是公共的,在公共类中,并且在公共接口中使用(但您知道它也可以是私有接口/类,不会有任何区别)。如果这是纯 java,我没有问题,但 android studio 似乎不喜欢 java 访问说明符和包。 为什么我不能像在 java 中那样只键入 MESSAGE_WRITE,而是必须调用它的类或导入该死的属性?

我为此发疯了,请帮助我。我知道访问说明符和可见性在 java 中是如何工作的,这种情况对我来说是个谜,请证明我是个白痴,因为无法阅读或告诉我这是 android studio 的一个可怕的错误/“功能”

感谢您的宝贵时间

【问题讨论】:

    标签: java android-studio


    【解决方案1】:

    在您的包装规范中,您有一个错字。你导入了msg,但是包名是mgs。

    【讨论】:

    • 通过使用:import static com.mgs.bchat.util.*;我可以使用静态属性。我因为之前没有尝试过而感到愚蠢(可能我使用了静态,但我犯了一些其他错误)。非常感谢
    • @samuele55598 如果对您有帮助,您可以接受答案。附近有一个 Vi 标志。
    猜你喜欢
    • 2011-11-22
    • 1970-01-01
    • 1970-01-01
    • 2014-01-26
    • 1970-01-01
    • 2018-02-10
    • 2021-10-08
    • 1970-01-01
    • 2013-06-17
    相关资源
    最近更新 更多