java - android studio和公共类/属性的问题
问题描述
我将在这里放一个实际示例来说明正在发生的事情,因为现在我试图解决没有结果的问题已经有一段时间了。
这是我在不同活动或 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 的一个可怕的错误/“功能”
感谢您的时间
解决方案
在您的包装规范中,您有一个错字。您导入 msg,但包名称是 mgs。
推荐阅读
- kubernetes - 是否可以在 KOPS 中使用 ALB 修补 Kubernetes svc?
- google-analytics - BigQuery Analytics 当天查询
- java - 如何在 JAVA 密钥库中信任由内部 CA 签名的证书
- flutter - 如何在BottomAppBar颤动上以编程方式更改选项卡?
- python - Sklearn MinMax 变换不起作用,不会带来相等的数字
- c++ - 在 Qt 中使用高兴:QOpenGL 和高兴是冲突的
- php - 在 PHP 中使用 file_get_contents() 欺骗 URL
- sql - 如果 sql select except 语句的结果没有返回记录,如何获取值 0?
- python - TypeError: Merge 只能在张量列表上调用,而不是 keras 中的单个张量
- python - 使用 python 在单个 Cloudwatch Synthetics Canary 中检查多个 URL