Serviceを継承したクラスでwindowManagerを使用してオーバーレイ表示する小さなTextViewを生成しています。
Service側クラスでfindViewByIdはつかえませんか?
Service側.java
java
1 2private void BindCtrl() { 3 4 5 linearTelop = (LinearLayout) findViewById(R.id.linear_telop); 6 7 8 9 marqueeView = (MarqueeView) findViewById(R.id.marquee_telop); 10 11 }
@Override
public void onCreate() { 時にBindCtrl() を呼び出したいです。
###エラーメッセージ
メソッド findViewById(int) は型 xxxService で未定義です。
java
1 @Override 2 public int onStartCommand(Intent intent, int flags, int startId) { 3 4 // inflaterの生成 5 LayoutInflater layoutInflater = LayoutInflater.from(this); 6 7 windowManager = (WindowManager)getApplicationContext().getSystemService(Context.WINDOW_SERVICE); 8 WindowManager.LayoutParams params = new WindowManager.LayoutParams( 9 WindowManager.LayoutParams.MATCH_PARENT, 10 WindowManager.LayoutParams.WRAP_CONTENT, 11 WindowManager.LayoutParams. TYPE_SYSTEM_ERROR, 12 WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE 13 | WindowManager.LayoutParams.FLAG_FULLSCREEN 14 | WindowManager.LayoutParams.FLAG_LAYOUT_INSET_DECOR 15 | WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN 16 | WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS 17 // | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE 18 | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL, 19 PixelFormat.TRANSLUCENT); 20 21 // 最下部に配置 22 params.gravity= Gravity.BOTTOM | Gravity.CENTER; 23 24 //params.x = 20 * dpScale; // 20dp 25 // params.y = 100 * dpScale; // 80dp 26 27 // レイアウトファイルからInfalteするViewを作成 28 view = layoutInflater.inflate(R.layout.overlapservice, null); 29 30 // Viewを画面上に追加 31 windowManager.addView(view, params); 32 33
としていてoverlapserviceのレイアウトファイルにはfindViewByIdしたいViewを記述しています。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/08/25 04:22