Also hier ist das Problem, ich versuche, ein Overlay zu machen, das Daten aus der Hauptanwendung zeigt, die App läuft ohne Fehler, aber es zeigt nicht die Daten .Android Studio - Informationen von Hauptaktivität in Overlay-Aktivität anzeigen
Main.java: Dies ist die Haupt-App, wo alle Daten und andere Dinge passieren.
package com.schnetzapps.myapplication;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.Switch;
import android.widget.TextView;
public class Main extends Activity {
Switch toggleOverlaySwitch;
TextView overlayLabel;
EditText testText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTheme(R.style.AppTheme);
setContentView(R.layout.activity_main);
LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View vi = inflater.inflate(R.layout.overlay, null);
overlayLabel = (TextView) vi.findViewById(R.id.overlayLabel);
toggleOverlaySwitch = (Switch) findViewById(R.id.openOverlay);
toggleOverlaySwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
toggleService();
testText = (EditText) findViewById(R.id.testText);
overlayLabel.setText(testText.getText());
testText.setText(overlayLabel.getText());
}
});
}
private void toggleService(){
Intent intent = new Intent(this, OverlayService.class);
if(!stopService(intent)){
startService(intent);
}
}
}
Overlay.java: Dies ist ein Overlay entwickelt, um die Benutzerinformationen zu zeigen, wie es egal ändert, was andere Anwendungen offen sein können. Paket com.schnetzapps.myapplication;
import android.app.Service;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.PixelFormat;
import android.os.IBinder;
import android.view.View;
import android.view.WindowManager;
import android.widget.LinearLayout;
public class Overlay extends Service {
LinearLayout oView;
@Override
public IBinder onBind(Intent i) {
return null;
}
@Override
public void onCreate() {
super.onCreate();
oView = new LinearLayout(this);
int col = Color.parseColor("#4286f4");
oView.setBackgroundColor(col);
int width = 500;
int height = 500;
int x = 0;
int y = 0;
WindowManager.LayoutParams params = new WindowManager.LayoutParams(width, height, x, y,
WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE |
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL |
WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH,
PixelFormat.TRANSLUCENT);
WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
LinearLayout layout = (LinearLayout) View.inflate(this, R.layout.overlay, null);
oView.addView(layout);
wm.addView(oView, params);
}
@Override
public void onDestroy() {
super.onDestroy();
if(oView!=null){
WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
wm.removeView(oView);
}
}
}
activity_main.xml: Dies ist das Design der Haupt-App.
overlay.xml: Dies ist das Overlay-Design mit der Bezeichnung, die ich versuche, den Text zu setzen.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="wrap_content"
android:layout_height="wrap_content">
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/overlayLayout" >
<TextView
android:text="TextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/overlayLabel" />
</RelativeLayout>
</LinearLayout>
Ich bin keine NULL-Verweis Ausnahmen immer die besagt, dass ich an die falsche Textview bin zeigen und das Overlay ist Makeln schön wie erforderlich, warum ist der Text auf das Overlay nicht ändern, was in der eingegeben wurde EditTextfeld?
Screenshots Das Overlay wird nicht als auf umgeschaltet, so dass die Überlagerung nicht sichtbar ist:
Die Overlay-Option aktiviert ist wurde, aber der Textview zeigt nicht den Text aus dem EditText:
Ich bin sicher, ich vermisse etwas dummes ... jede Eingabe wird sehr geschätzt.