AndroidStudioでBroadcastReceiverクラス内でActivityクラスを取得する方法
- AndroidStudioでBroadcastReceiverクラス内でActivityクラスを取得する方法について教えてください。
- BroadcastReceiverクラス内でActivityクラスを取得する方法を知りたいです。
- AndroidStudioでBroadcastReceiverクラス内でActivityクラスを取得する方法についてお教えください。
- ベストアンサー
Activityクラスの取得方法
AndroidStudioでBroadcastReceiverクラス内でActivityクラスを取得したいのですが、どうすれば取得できますでしょうか? BroadcastReceiverクラス内で Intent update_service = new Intent(context , UpdateService.class); startService(update_service);と入力するとstartServiceの部分が赤字になってしまうのですが private Activity activity;とし ....activity.startServiceなどとしても変数が灰色で困っています。 AndroidStudioでBroadcastReceiverクラス内でActivityクラスを取得したいのですが、どうすれば取得できるか教えてください。
- shin11shin
- お礼率19% (100/511)
- Java
- 回答数1
- ありがとう数1
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
startServiceはcontextのメソッドなので、 https://developer.android.com/reference/android/content/Context.html?hl=ja#startService(android.content.Intent) ここのcontextを使って、 Intent update_service = new Intent(context , UpdateService.class); context.startService(update_service); でいいのではないでしょうか。
関連するQ&A
- activityからviewクラスを呼び出すには?
アンドロイドアプリを開発しているものですが、質問があります。 mainのactivityにボタンを表示させて、そのボタンが押されたらviewクラスを継承して自作したクラスScreenを呼び出したいと思っているのですが、うまくいきません。 Button btn = (Button)findViewById(R.id.button1); btn.setOnClickListener(new View.OnClickListener(){ public void onClick(View view){ Intent intent = new Intent(start.this , Screen.class) ; startActivity(intent) ; } } ) ; AndroidMainifest.xmlのActivityにも遷移先のクラス名を挿入していますので、問題がないはずなのですが、どなたか詳しい方お願い致します。 初心者なので、拙い説明で申し訳ありませんが、是非回答よろしくお願いいたします。
- ベストアンサー
- その他(プログラミング・開発)
- 無名クラスからのstartActivity
androidの勉強をしております。 無名クラス内からIntentのコンストラクタに渡す引数がthisでは不十分なのはどうしてですか? 以下がソース例です。 略 public class HelloAndroid extends Activity{ /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); 略 button1.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { Intent intent = new Intent(HelloAndroid.this, HA2.class); startActivity(intent); } }); } }
- ベストアンサー
- Java
- new クラス名(Activity名.this);
Android ・下記のようなコードがあるのですが、このとき「.this」の意味を教えてください ・Activityクラス自身? ・「.」で繋いでいる意味も、「this」の意味も良く分かりません ・thisだけでは駄目? ・引数は1つ? public class Hoge extends Activity { public class C1 {//インナークラス? protected m1method(略) { 略 = new クラス名(Hoge.this);
- ベストアンサー
- Java
- 違うクラスからの変数の共有化
一つのクラスの中にある変数の値を、二つの別なクラスから呼び出して、その二つのクラスのどちらから変数を参照しても同じ値が帰ってくるようにしたいのですが、いろいろ調べてもできなかったので質問させていただきますm(_ _)m // 共有化させたい変数を持つクラス // Var.java public class Var{ public static int i; public Var(int i){ this.i = i; } public Var(){} public static void getI(){ return i; } } //クラス1 //Class1.java public class Class1{ Var var = new Var(1); } //クラス2 //Class2.java public class Class2{ Var var = new Var(); System.out.println(var.getI()); } とした場合、Class1を実行し、次にClass2を実行すると、クラス1で定義した変数の値である 1 が戻ってくるようにしたいのですが、上記の方法では、Class2を実行すると結果は 0 になってしまいました。 まだまだ習い始めたばかりでいまいちstaticを使い切れていないと思います・・・ たとえば、PrintStreamクラスの public static final PrintStream out というのはどこから参照しても同じ結果なのでそのようなやり方で大丈夫だろうと思ったのですが・・・ このような方法では共有化させることはできないのでしょうか?またできないのでしたらほかのやり方がもしあった場合は教えていただきたいと思います。 どうかお願いします。
- ベストアンサー
- Java
- newしないインスタンス?実体化しなくてもいいの?
JAVAについて教えて下さい。 ServletContext application = getServletContext(); の成り立ちの意味なのですが、newがなぜないのか教えて下さい。 ~自身の考え~ (1)サーブレットコンテキストというクラスをインスタンス化して (サーブレットコンテキスト 変数A = new サーブレットコンテキスト();) ↑ ↑ クラス クラス (2)変数Aドットメソッド()によって、代入変数Bを作り上げる (サーブレットコンテキスト 代入変数B = 変数A . メソッド();) (3)のはずが、上記の式にはnewがありません。 なんで?? ~~ ~疑問点~ もしかしたらHttpServletでimportしているからそこでnewインスタンス化宣言している? だとするならどのような式になっているのでしょうか。 もしくはメソッドのF3キーとして上位をたどったときに出てきた public abstract class GenericServlet implements Servlet, ServletConfig, Serializable { public ServletContext getServletContext() { return getServletConfig().getServletContext(); } } として抽象クラスが出てきましたが、どこにもnew実体化していません。 よろしくお願いいたします。
- ベストアンサー
- Java
- static変数を持ったクラスを継承した複数のクラスで、独立してその変
static変数を持ったクラスを継承した複数のクラスで、独立してその変数を使いたい。 例えば、 class AbstractStatic{ public static String str; } class Ex1 extends AbstractStatic{} class Ex2 extends AbstractStatic{} というクラスがあったとして、 Ex1 e1 = new Ex1(); ex1.str = "hoge"; といれると、 ex2.str で、hogeが入ってしまいます。同じようなstatic変数を持つクラスを複数作りたいのですが、継承させると、独立して変数を持たせられません。 同じようなクラスに直接static変数を、記述するしかないのでしょうか?
- ベストアンサー
- Java
- クラス作成
C#にてクラス作成をしております。その中で疑問に思った点を質問させていただきます。 画像を枠内に表示させるクラス 実装すべき変数:枠番号、パス、 映像を枠内に流すクラス 実装すべき変数:枠番号、パス、再生時間 Flashを枠内に流すクラス 実装すべき変数:枠番号、パス など色々なクラスがあってそれをまとめたクラスを作成中です。 上記のクラスを実装するにあたって、共通の変数はクラスにしてしまい それを継承しましょうと言う指示がありました。これはどういった使い方をするものなのでしょうか? class Class2 { public int no { get; set; } public string path { get; set; } } class Movie : Class2 { public float time{get;set;} public void Play(int frameNo, string path, float playtime){} } class Picture: Class2 { public void Show(int frameNo, string path){} } これをForm1.cs内で Class2 cls = new Class2(); cls.path = "C:\\test"; cls.no = 11; とかすれば MovieやPictureで使いまわしができると思いきや MovieやPictureをNewすれば初期化されてしまう為、何か根本的に 私の考えが間違ってると思います。 共通の変数を別のクラスにしておいて継承して使うというのはどういった使い方をするのでしょうか? よろしければ例で教えていただけないでしょうか
- ベストアンサー
- その他(プログラミング・開発)
- 継承したクラス側のクラス名の取得
C#3.5を使用しています。 BaseClassはStackTraceを使ってクラス名を取得できるメソッドを持っています。 それを継承したDerivedClass側でそのクラス名「DerivedClass」を取得したいのですが、 次のようなやり方では「BaseClass」が取得されてしまいます・・・ あくまでBaseClass側に記述したメソッドのままで、DerivedClass側のクラス名を取得するには どのようにしたら良いのでしょうか? public class BaseClass { public string className; public string ClassName { get { if (className == null) { StackTrace st = new StackTrace(false); StackFrame sf = st.GetFrame(0); className = sf.GetMethod().ReflectedType.Name; } return className; } set { className = value; } } } public class DerivedClass : BaseClass { } var c = new DerivedClass(); MessageBox.Show(c.ClassName);// BaseClassと表示される
- ベストアンサー
- その他(プログラミング・開発)
- androidアプリが強制終了してしまいます。
オプションメニューボタンの「MENU_ITEM0」を押すと、他の機能が呼び出されずに強制終了でエラーになってしまいます。 ・呼び出すソースファイルです。 「public class CogoterActivity extends Activity { //メニューアイテムID private static final int MENU_ITEM0=0, MENU_ITEM1=1; //アクティビティ起動時に呼ばれる @Override public void onCreate(Bundle bundle) { super.onCreate(bundle); requestWindowFeature(Window.FEATURE_NO_TITLE); //リスト要素の情報群の生成 List<ListItem> items=new ArrayList<ListItem>(); for (int i=0;i<50;i++) { items.add(new ListItem(res2bmp(this,R.drawable.icon),"項目"+i)); } //リストビューの設定 ListView listView=new ListView(this); listView.setScrollingCacheEnabled(false); listView.setAdapter(new ListAdapter(this,items)); setContentView(listView); new TextView(this); } public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); //メニューアイテム0の追加 MenuItem item0=menu.add(0,MENU_ITEM0,0,"ぶつぶつ"); item0.setIcon(android.R.drawable.ic_menu_edit); //メニューアイテム1の追加 MenuItem item1=menu.add(0,MENU_ITEM1,0,"ぶくぶく"); item1.setIcon(android.R.drawable.ic_menu_more); return true; } //メニューアイテム選択イベントの処理 @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case MENU_ITEM0: Intent intent = new Intent(this, cogoter.project.MyActivity.class); startActivity(intent); return true; case MENU_ITEM1: showDialog(this,"","ぶくぶくを押した"); return true; } return true; } //ダイアログの表示 private static void showDialog(Context context,String title,String text) { AlertDialog.Builder ad=new AlertDialog.Builder(context); ad.setTitle(title); ad.setMessage(text); ad.setPositiveButton("OK",null); ad.show(); } //リソース→ビットマップ public static Bitmap res2bmp(Context context,int resID) { return BitmapFactory.decodeResource( context.getResources(),resID); } }」 ・呼び出されるソースコード 「public class MyActivity extends Activity implements View.OnClickListener { private final static int WC=LinearLayout.LayoutParams.WRAP_CONTENT; private final static int FP=LinearLayout.LayoutParams.FILL_PARENT; private EditText editText;//エディットテキスト //アクティビティ起動時に呼ばれる @Override public void onCreate(Bundle bundle) { super.onCreate(bundle); requestWindowFeature(Window.FEATURE_NO_TITLE); //戻り値の指定(6) setResult(Activity.RESULT_CANCELED); //インテントからのパラメータ取得(5) String text=""; Bundle extras=getIntent().getExtras(); if (extras!=null) text=extras.getString("text"); //レイアウトの生成 LinearLayout layout=new LinearLayout(this); layout.setBackgroundColor(Color.rgb(255,255,255)); layout.setOrientation(LinearLayout.VERTICAL); setContentView(layout); //OKボタンの生成 Button button=new Button(this); button.setText("OK"); button.setOnClickListener(this); button.setLayoutParams(new LinearLayout.LayoutParams(WC,WC)); layout.addView(button); //エディットテキストの生成 editText=new EditText(this); editText.setText(text); editText.setLayoutParams(new LinearLayout.LayoutParams(FP,WC)); layout.addView(editText); } //ボタンクリック時に呼ばれる public void onClick(View v) { //戻り値の指定(6) Intent intent =new Intent(); intent.putExtra("text",editText.getText().toString()); setResult(Activity.RESULT_OK,intent); //アクティビティの終了(7) finish(); } }」
- 締切済み
- Java
- Android アクティビティ間の受け渡しについて
現在、あるアクティビティで作成したSocketクラスを継承したオブジェクトを 別のアクティビティに受け渡そうとしています。 このとき受け取った先のアクティビティで ソケットの接続状態が変わってしまい、困っています。 原因がわかるかたおりましたら教えてください。よろしくお願いします。 ---- 手順 1.Serializableを実装したSocket継承クラス(Socket2)を作成 (Socketオブジェクトをアクティビティに渡すために必要) class Socket2 extends Socket implements Serializable 2.アクティビティAでホストXXXとの接続を確立 Socket2 socket = new Socket2(); Socket2.connect(XXX); ★ここでsocketの属性IsConnectedを見るとTrueになっています 3.インテント作成 Intent intent = new Intent(context, ActivityB.class); 4.パラメータ設定 intent.putExtra("SOCKET", socket); 5.アクティビティBを起動 StartActivity(intent); ; 6.アクティビティBのOnCreate()でパラメータを取得 Bundle extras = getIntent().getExtras(); if(extras != null){ socket = (Socket2)extras.getSerializable("SOCKET"); } ★ここでsocketの属性IsConnectedを見るとFalseになっています 変数socket自体はnullではないので何か値は渡ってきてはいるのですが 接続が切れているため、たとえば socket.getInputStream()等をすると例外(IOException)が飛んできます。 またSocket2クラスに文字列の属性を追加した場合には、 その値は正しく渡せているようです。 Serializableを実装すればオブジェクトもアクティビティに渡せるということなので その通りにやったつもりなのですが・・・。 なぜこうなってしまうのか原因がわかりません。 よろしくお願いします。
- ベストアンサー
- Java