Bergmann2016
Neues Mitglied
- 4
Einen wunderschönen Abend,
kann mir vllt. Jemand weiterhelfen? Ich habe eine App, wie ich schon einmal schrieb um Berechnungen durchzuführen. Nun versuche ich seit dem Mittag ein Widget dafür zu erstellen. Als Anleitung habe ich mir ein Video auf YouTube rausgesucht (Homescreen Widget #2, vom AndroidPro, ab ca. 14. Minute bis etwa 19. Minute). Nun hat meine App eine MainActivity und mehrere Fragmente, mein Gedanke ist, das Widget bekommt 5 TextViews und von ihnen aus kann direkt das passende Fragment geöffnet werden. Leider ist in dem Video nur die Rede von die App zu öffnen. Also soll mein Widget dem Benutzer den Weg über das Auswahlfenster ersparen und in gewisser Weise als Inhaltsverzeichnis dienen.
Kann man es überhaupt so machen wie ich es mir vorstelle? Oder geht das womöglich generell nicht? Denn ich fand keine vergleichbare Erklärung, wo sowas dargestellt wird. Entweder fand ich Erklärungen zu "Was ist ein Widget?" über "Welche Sorten Intents gibt es?" bis eben dem Video. Aber ich konnte mir selber keinen Reim darauf machen "Wie öffne ich ein Fragment mittels Intent?".
Also ich habe nun meine widget.class die wie folgt aussieht:
Ich vermute das ich in der Zeile
Intent appOpen = new Intent(context, MainActivity.class);
meine Methode zum Anzeigen des Fragments einbauen muss. Aber Android Studio sagt mir ständig das es nicht geht. Mal weil die Methode nicht statisch ist, ein anderes mal weil die Methode private ist, ein anderes Mal wollte er einen String. Meine Methode zum Fragment anzeigen sieht so aus:
Wie gesagt, aktuell ist die Methode public (mir ist dabei nicht sehr wohl), war aber ursprünglich private.
Soweit klappt es ja auch mit dem öffnen der App, aber ich möchte gerne das spezielle Fragment öffnen.
Gerade frage ich mich, ob ich für das Fragment ggf. eine eigene Klasse schreiben muss. Dann könnte ich anstatt MainActivity.class eben Fragment_Arbeit.class ansprechen. Nur weiß ich nicht wie ich eine komplett eigene Klasse schreibe. Ist mir eh gerade bissl zu spät.
Kann mir denn bitte Jemand einen Hinweis / Tipp geben? Wäre sehr schön.
kann mir vllt. Jemand weiterhelfen? Ich habe eine App, wie ich schon einmal schrieb um Berechnungen durchzuführen. Nun versuche ich seit dem Mittag ein Widget dafür zu erstellen. Als Anleitung habe ich mir ein Video auf YouTube rausgesucht (Homescreen Widget #2, vom AndroidPro, ab ca. 14. Minute bis etwa 19. Minute). Nun hat meine App eine MainActivity und mehrere Fragmente, mein Gedanke ist, das Widget bekommt 5 TextViews und von ihnen aus kann direkt das passende Fragment geöffnet werden. Leider ist in dem Video nur die Rede von die App zu öffnen. Also soll mein Widget dem Benutzer den Weg über das Auswahlfenster ersparen und in gewisser Weise als Inhaltsverzeichnis dienen.
Kann man es überhaupt so machen wie ich es mir vorstelle? Oder geht das womöglich generell nicht? Denn ich fand keine vergleichbare Erklärung, wo sowas dargestellt wird. Entweder fand ich Erklärungen zu "Was ist ein Widget?" über "Welche Sorten Intents gibt es?" bis eben dem Video. Aber ich konnte mir selber keinen Reim darauf machen "Wie öffne ich ein Fragment mittels Intent?".
Also ich habe nun meine widget.class die wie folgt aussieht:
Code:
public class widget extends AppWidgetProvider {
@override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget);
Intent appOpen = new Intent(context, MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, appOpen,0);
remoteViews.setOnClickPendingIntent(R.id.tv_widget_arbeit, pendingIntent);
appWidgetManager.updateAppWidget(appWidgetIds, remoteViews);
super.onUpdate(context, appWidgetManager, appWidgetIds);
}
@override
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
}
}
Intent appOpen = new Intent(context, MainActivity.class);
meine Methode zum Anzeigen des Fragments einbauen muss. Aber Android Studio sagt mir ständig das es nicht geht. Mal weil die Methode nicht statisch ist, ein anderes mal weil die Methode private ist, ein anderes Mal wollte er einen String. Meine Methode zum Fragment anzeigen sieht so aus:
Code:
public void zeigeArbeit() {
ViewGroup container = (ViewGroup)findViewById(R.id.container);
container.removeAllViews();
container.addView(getLayoutInflater().inflate(R.layout.fragment_arbeit, null));
container.findViewById(R.id.zuruck).setOnClickListener(this);
container.findViewById(R.id.tv_berechnen).setOnClickListener(this);
Fenster = 1;
}
Wie gesagt, aktuell ist die Methode public (mir ist dabei nicht sehr wohl), war aber ursprünglich private.
Soweit klappt es ja auch mit dem öffnen der App, aber ich möchte gerne das spezielle Fragment öffnen.
Gerade frage ich mich, ob ich für das Fragment ggf. eine eigene Klasse schreiben muss. Dann könnte ich anstatt MainActivity.class eben Fragment_Arbeit.class ansprechen. Nur weiß ich nicht wie ich eine komplett eigene Klasse schreibe. Ist mir eh gerade bissl zu spät.
Kann mir denn bitte Jemand einen Hinweis / Tipp geben? Wäre sehr schön.
Zuletzt bearbeitet von einem Moderator: