XXX型を囲むインスタンスはアクセスできない問題をJavaで解決
2022-02-12 10:22:44
Activityの実装クラスの一部をjavaのクラスに移して実装したいときがあります。例えば、次の2つのクラスを書きます。
LifeCircleというクラスで。
public class LifeCircle {
public class Mybroadcast extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
}
}
}
このようにActivityでnewにすると。
public class Settings extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.test_layout);
LifeCircle lifeCircle = new LifeCircle(this);
Mybroadcast cast = new Mybroadcast();
}
}
コンパイラはエラーを報告します。
- No enclosing instance of type LifeCircle is accessible. must qualify the allocation with an enclosing instance of type LifeCircle (e.g. x.new A() where x is an instance of
LifeCircle).
一つの解決策は、Mybroadcastを静的なクラスとして定義することです。
を得るために、これの一種を作る。
package com.example.shoplistdownload;
import android.content;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
public class LifeCircle {
Context mContext;
private static LifeCircle sInstance;
private Mybroadcast mBroadcast;
private Settings mInstance;
LifeCircle(Context context) {
mContext = context;
mInstance = (Settings)context;
}
public static LifeCircle getIntance(Context context) {
if (sInstance == null) {
sInstance = new LifeCircle(context);
}
return sInstance;
}
public class Mybroadcast extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
}
}
public void registerBroadcaster() {
mBroadcast = new Mybroadcast();
IntentFilter filter = new IntentFilter();
filter.addAction("com.example.action");
mInstance.registerReceiver(mBroadcast, filter);
}
}
public class Settings extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.test_layout);
LifeCircle lifeCircle = new LifeCircle(this);
lifeCircle.registerBroadcaster();
}
}
関連
-
xxx は型に解決できない エラー解決
-
Map<String,Boolean> 型をインスタンス化できません。
-
Javaでエラーが発生しました。非静的フィールドへの静的な参照を作成できません。
-
SLF4J: クラスパスが複数の SLF4J バインディングを含んでいる Error
-
エラー: jdkのバージョンの問題により、クエリへの参照が曖昧になる
-
JAVAMail TLS配信の注意点
-
互換性のない型です。ArrayList<ArrayList<Integer>>はList<List<Integer>>に変換できない。
-
HttpServletRequest型ではgetServletContext()メソッドは未定義です。
-
[Java] jdk1.7 trustAnchors パラメータは空であってはならない
-
未処理の例外:java.text.ParseException
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Springの構成でエラーなくIntelliJのアイデア、アセンブリオブジェクトは、自動配線できませんでした。
-
Java 文字クラスとメソッド
-
Error: missing `server' JVM at `C:\Program Files (x86)\Javajre1.8.0_151bin server╱jvm.dll'.
-
java.lang.UnsupportedOperationException 解決方法
-
リクエストのエンティティが大きすぎる問題の解決
-
java にリソースリークがある: 'XXX' は決して閉じられない ソリューション
-
無効なカラム名
-
svn: 接続から読み取ることができません。リモートホストが既存の接続を強制的に閉じました。
-
JIRA REST API 呼び出し方法
-
トークンに関する構文エラー、代わりに AnnotationName が期待される 構文エラー