[解決済み】androidでコンテキストからアクティビティを取得する方法
2022-04-17 12:28:37
質問
これは困りましたね。
私はカスタムレイアウトクラス内からアクティビティメソッドを呼び出す必要があります。この問題は、レイアウト内からアクティビティにアクセスする方法が分からないことです。
プロフィールビュー
public class ProfileView extends LinearLayout
{
TextView profileTitleTextView;
ImageView profileScreenImageButton;
boolean isEmpty;
ProfileData data;
String name;
public ProfileView(Context context, AttributeSet attrs, String name, final ProfileData profileData)
{
super(context, attrs);
......
......
}
//Heres where things get complicated
public void onClick(View v)
{
//Need to get the parent activity and call its method.
ProfileActivity x = (ProfileActivity) context;
x.activityMethod();
}
}
プロフィール活動
public class ProfileActivityActivity extends Activity
{
//In here I am creating multiple ProfileViews and adding them to the activity dynamically.
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.profile_activity_main);
}
public void addProfilesToThisView()
{
ProfileData tempPd = new tempPd(.....)
Context actvitiyContext = this.getApplicationContext();
//Profile view needs context, null, name and a profileData
ProfileView pv = new ProfileView(actvitiyContext, null, temp, tempPd);
profileLayout.addView(pv);
}
}
上記のように、profileViewをプログラムでインスタンス化し、それと一緒にactivityContextを渡しています。2つの質問があります。
- Profileview に正しいコンテキストを渡していますか?
- コンテキストから含むアクティビティを取得するにはどうすればよいですか?
解決方法は?
あなたの
Activity
を渡すだけです。
this
を
Context
をレイアウトに使用します。
ProfileView pv = new ProfileView(this, null, temp, tempPd);
その後、あなたは
Context
がレイアウトに表示されますが、それが実際にはあなたの
Activity
で、それをキャストすることで、必要なものを手に入れることができます。
Activity activity = (Activity) context;
関連
-
[解決済み] 現在のアクティビティからルートビューを取得する
-
アンドロイドのエリプサイズを使用する
-
アンドロイドシェイプ、グラデーション、角丸、ボーダーラインの設定
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] Androidでアクティビティ起動時にEditTextにフォーカスが当たらないようにする方法
-
[解決済み] インスタンス状態の保存を使用してアクティビティ状態を保存するにはどうすればよいですか?
-
[解決済み] Androidの「コンテキスト」とは何ですか?
-
[解決済み] Androidのローテーションでアクティビティを再開する
-
[解決済み】Android UserManager.isUserAGoat()の正しい使用例?)
-
[解決済み】Androidで透明なActivityを作成する方法は?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
Android Studio を 3.6.3 にアップデートした後、構成 :classpath のアーティファクトをすべて解決できない。
-
プログラム "git.exe "を実行できない場合の正しい解決方法です。CreateProcessエラー=2
-
Androidで発生した問題、解決策とヒント
-
RuntimeException: アクティビティを開始できません ComponentInfo solution
-
Google PlayデバイスはPlay保護機構の認証を受けていません。
-
アンドロイドスタジオのエラーを解決する --> Error:(1, 0) id 'com.android.application' を持つプラグインが見つかりません。
-
Windowsのadbシェルでデータディレクトリにアクセスするとパーミッションが拒否される
-
Androidカスタムドロップダウンリストボックスコントロール
-
アンドロイドシェイプ、グラデーション、角丸、ボーダーラインの設定
-
アンドロイドの遅延実行のいくつかの方法