info.xml im Menü anklicken.

  • Antworten:42
heyhey83
  • Forum-Beiträge: 51

19.04.2020, 12:41:52 via Website

Ich möchte gerne meine info.xml aufrufen beim Anklicken. das Menü habe ich erstellt Aber wie rufe ich das jetzt auf?

Mit freundlichen Grüßen
Roberto

Kommentieren
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

19.04.2020, 14:32:26 via Website

Hallo Roberto,

bitte beschreibe genauer was du machen willst.
Was ist deine info.xml?
Ein Layout? Eine Menüdefinition?
Wird das menü in deiner Activity schon angezeigt?

LG Pascal //It's not a bug, it's a feature. :) ;)

Hilfreich?
Kommentieren
heyhey83
  • Forum-Beiträge: 51

19.04.2020, 14:55:36 via Website

Also das ist Layout mit ein bar informationen über die App. Das menü wird in der Appbar schon angezeigt ,nun will ich aber wenn ich auf App info klicke das sich das dann auch öffnet.

Hilfreich?
Kommentieren
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

19.04.2020, 14:59:35 via Website

Gib mir mal ein Beispiel wie du das meinst.

LG Pascal //It's not a bug, it's a feature. :) ;)

Hilfreich?
Kommentieren
heyhey83
  • Forum-Beiträge: 51

19.04.2020, 15:10:02 via Website

Also ich habe ja oben das Menü, dann gehe ich auf die drei Punkte dann erscheind der Menüpunkt App Info, und da soll dann sich das Layout bzw die info.xml öffnen.

Hilfreich?
Kommentieren
Jokel
  • Forum-Beiträge: 1.527

19.04.2020, 15:11:04 via Website

Hallo
ich denke die Methode hast du

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {

aber die Methode wo der Click auf das menue ankommt nicht

@Override
public boolean onOptionsItemSelected(MenuItem item) {

Hilfreich?
Kommentieren
heyhey83
  • Forum-Beiträge: 51

19.04.2020, 15:13:20 via Website

@Override 
public boolean onOptionsItemSelected(MenuItem item) {

Habe ich auch.

Hilfreich?
Kommentieren
heyhey83
  • Forum-Beiträge: 51

19.04.2020, 15:53:05 via Website

An welcher stelle muss ich dann die info.xml einfügen also ohne xml am ende.

Hilfreich?
Kommentieren
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

19.04.2020, 16:57:20 via Website

  1. Du sagst das menü wrd angezeigt, dann ist deine XML an der passenden Stelle
  2. Wenn du den Click behandeln willst dann wertest du in onOptionsItemSelected den MenuItem Parameter aus. Wenn ein Item geklickt wird, wird diese Methode aufgerufen und dir das passende Item auf das geklickt wurde übergeben.
    Da fehlt dann von dir aus eine Fallunterscheidung was bei welchem Item gefunden wurde.

LG Pascal //It's not a bug, it's a feature. :) ;)

Hilfreich?
Kommentieren
heyhey83
  • Forum-Beiträge: 51

19.04.2020, 17:38:54 via Website

Also ich habe das so erstellt in MainActivity

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu, menu);
    return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.menu:
            addSomething();
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}

private void addSomething() {
}

}

und im menu.xml

<menu
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">

<item
    android:id="@+id/menu"
    android:background="@color/colorPrimaryDark"
    android:icon="@android:drawable/ic_menu_info_details"
    android:textColor="#F1EBEB"
    android:title="App info"
    app:showAsAction="never" />

nun will ich aber das es die info.xml aus dem Layout Ordner auf macht.

Hilfreich?
Kommentieren
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

19.04.2020, 18:52:45 via Website

Nur eine Info.xml als Layout wird dir nichts helfen.
Zum anzeigen eines Layouts brauchst du immer ein Fragment oder einen Activity o.ä.
Somit musst du zu deinem info.xml Layout eine Activity erstellen und kannst diese dann per Intent starten lassen.

LG Pascal //It's not a bug, it's a feature. :) ;)

Hilfreich?
Kommentieren
heyhey83
  • Forum-Beiträge: 51

19.04.2020, 19:27:54 via Website

Okay gibt es da ein beispiel?

Hilfreich?
Kommentieren
Jokel
  • Forum-Beiträge: 1.527

20.04.2020, 05:47:32 via Website

Hallo dein code is eigentlich OK.
Wenn du auch eine Actionbar oder Tollbar hast. Eine activity hast du du ja wie du sagst.

Das neue

Das Menü wird nur über die Actionbar angezeigt. Über das Layout durch Klick eines Buttons zb geht das nicht.

Da könntest du einen Dialog. Oder ein popup Menü machen.

Die zwei genannten Methoden gehen nur in Verbindung mit der Actionbar.

https://www.javatpoint.com/android-popup-menu-example

— geändert am 20.04.2020, 05:52:15

Hilfreich?
Kommentieren
Jokel
  • Forum-Beiträge: 1.527

20.04.2020, 06:00:46 via Website

a nun will ich aber das es die info.xml aus dem Layout Ordner auf macht

Wo was ist diese info.xml?
Wenn das das Menü für ein popup sein soll dafür habe ich dir ein Beispiel gegeben.

Hilfreich?
Kommentieren
heyhey83
  • Forum-Beiträge: 51

20.04.2020, 10:35:12 via Website

Na ja ein popup sollte es nicht zwingend sein.

Ach ja eine activity_main.xml habe ich schon

<?xml version="1.0" encoding="utf-8"?>

xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="MainActivity">

<WebView
    android:id="@+id/webview"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

Hilfreich?
Kommentieren
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

20.04.2020, 10:39:07 via Website

Wie gesagt dann mach eine neue Activity draus und starte diese :)

LG Pascal //It's not a bug, it's a feature. :) ;)

Hilfreich?
Kommentieren
Jokel
  • Forum-Beiträge: 1.527

20.04.2020, 10:46:05 via Website

Hallo was soll das mit der activity ist erstens nur die Layout Datei außerdem hast du nicht mal ein Layout nur die WebView. Reicht eigentlich nicht.

Die webview gehört in ein layout. Ob relativ, linear, constrain ist egal.

Schaue dir mal Beispiele im Netz an wie eine Layout dadei ordentlich aussehen sollte.

— geändert am 20.04.2020, 10:55:29

Hilfreich?
Kommentieren
heyhey83
  • Forum-Beiträge: 51

20.04.2020, 10:57:13 via Website

Okay da ich ja in der Appbar Quasi ein Button habe muss die die android: id @+id/menu" sein da so heißt der button name="menu">App Info im string.xml und im menu.xml ist der titel App info

Hilfreich?
Kommentieren
Jokel
  • Forum-Beiträge: 1.527

20.04.2020, 11:01:47 via Website

Ich sehe bei dem wirrwar was du schreibst nicht duch..

— geändert am 20.04.2020, 11:10:15

Hilfreich?
Kommentieren
Jokel
  • Forum-Beiträge: 1.527

20.04.2020, 11:17:49 via Website

Und wo ist jetzt das Problem du hast doch alles. Was willst du?

— geändert am 20.04.2020, 11:18:14

Hilfreich?
Kommentieren
heyhey83
  • Forum-Beiträge: 51

20.04.2020, 11:39:23 via Website

so habe nun eine zweite Activity erstellt.

public class Main2Activity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.appinfo);
}

}

Hilfreich?
Kommentieren
heyhey83
  • Forum-Beiträge: 51

20.04.2020, 12:03:59 via Website

Also so

public void sendMessage(View view) {
    Intent intent = new Intent(this, Main2Activity.class);
    EditText editText = (EditText) findViewById(R.id.menu);
    String message = editText.getText().toString();
    intent.putExtra(EXTRA_MESSAGE, message);
    startActivity(intent);
Hilfreich?
Kommentieren
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

20.04.2020, 12:07:27 via Website

Wenn R.id.menu deine EditText ist dann ja

LG Pascal //It's not a bug, it's a feature. :) ;)

Hilfreich?
Kommentieren
heyhey83
  • Forum-Beiträge: 51

20.04.2020, 12:12:47 via Website

habe da mal noch was geändert so sieht es jetzt in MainActivity aus

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu, menu);
    return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.menu:
            addSomething();
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}

private void addSomething() {
}
public void sendMessage(View view) {
    Intent intent = new Intent(this, Main2Activity.class);
    @SuppressLint("WrongViewCast") EditText editText = findViewById(R.id.textView);
    String message = editText.getText().toString();
    intent.putExtra(EXTRA_MESSAGE, message);
    startActivity(intent);
}

}

ich hoffe es ist richtig so

Hilfreich?
Kommentieren
Jokel
  • Forum-Beiträge: 1.527

20.04.2020, 12:20:34 via Website

Ja sieht besser aus nur was ist EXTRA_MESSAGE.
Hast du das auch am Anfang als string definiert?

Nur schreibe den Code in die addSomething Methode ohne das View View

— geändert am 20.04.2020, 12:28:11

Hilfreich?
Kommentieren
heyhey83
  • Forum-Beiträge: 51

20.04.2020, 12:31:00 via Website

Also meine string sieht so aus.

<resources>
<string name="app_name">lafa-App</string>
<string name="menu">App Info</string>

Hilfreich?
Kommentieren
Jokel
  • Forum-Beiträge: 1.527

20.04.2020, 12:33:03 via Website

Schön aber warum postest du das?

Hilfreich?
Kommentieren
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

20.04.2020, 12:34:54 via Website

Mach lieber sowas:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.menu:
            switchToActivity();
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}


public void switchToActivity() {
    Intent intent = new Intent(this, Main2Activity.class);    
    startActivity(intent);
}

Du bracuhst doch kein Text übergeben oder?

LG Pascal //It's not a bug, it's a feature. :) ;)

Hilfreich?
Kommentieren
Jokel
  • Forum-Beiträge: 1.527

20.04.2020, 12:38:41 via Website

Ich bin natürlich davon ausgegangen das er ein Text übergeben will. Aber er hat es scheinbar nur von deinem Beispiel kopiert.

Hilfreich?
Kommentieren
heyhey83
  • Forum-Beiträge: 51

20.04.2020, 12:39:12 via Website

ja da haste auch wieder recht danke Pascal.

Hilfreich?
Kommentieren
Jokel
  • Forum-Beiträge: 1.527

20.04.2020, 12:43:29 via Website

Frage geht es denn jetzt.
Wenn nicht fehlt dir bestimmt der Eintrag in der Manifest. XML für die zweite Activity.

Hilfreich?
Kommentieren
heyhey83
  • Forum-Beiträge: 51

20.04.2020, 12:48:25 via Website

Also Pascal das geht nun in der Mainfest ist es eingetragen nun muss ich nur noch den zurück Button machen dann geht alles wie gewünscht.

Hilfreich?
Kommentieren
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

20.04.2020, 13:24:28 via Website

Der normale Zurück Button am unteren Rand sollte standardmäßig funktionieren oder meinst du den Button in der Toolbar?

LG Pascal //It's not a bug, it's a feature. :) ;)

Hilfreich?
Kommentieren
heyhey83
  • Forum-Beiträge: 51

20.04.2020, 13:26:52 via Website

Ich meine den Button in der Toolbar.

Hilfreich?
Kommentieren
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

20.04.2020, 13:34:49 via Website

Dann musst du einfach die toolbar laden und die passenden Listener nutzen:
https://stackoverflow.com/a/45344079/4975457

LG Pascal //It's not a bug, it's a feature. :) ;)

Hilfreich?
Kommentieren
heyhey83
  • Forum-Beiträge: 51

20.04.2020, 13:40:44 via Website

Du meinst das wo so.

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case android.R.id.MainActivity:
            return true;
    }
    return super.onOptionsItemSelected(item);
}
    }
Hilfreich?
Kommentieren
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

20.04.2020, 13:44:48 via Website

Bei Stackoverflow steht doch eindeutig:

  Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar_id);
    toolbar.setTitleTextColor(Color.WHITE);
    toolbar.setTitle(getResources().getString(R.string.your_title));
    toolbar.setNavigationIcon(R.mipmap.back_btn);
    setSupportActionBar(toolbar);

    toolbar.setNavigationOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            onBackPressed();  // byDefault provided backPressed method, or handle your own way
        }
    });

Dein Title/Icons etc musst du selber suchen oder weglassen...

Alternativ kannst du folgendes probieren:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    // Respond to the action bar's Up/Home button
    case android.R.id.home:
        //Home/back button
        return true;
    }
    return super.onOptionsItemSelected(item);
}

— geändert am 20.04.2020, 13:45:58

LG Pascal //It's not a bug, it's a feature. :) ;)

Hilfreich?
Kommentieren
heyhey83
  • Forum-Beiträge: 51

20.04.2020, 13:45:52 via Website

Ach so ja gerade übersehen sorry mein Fehler.

Hilfreich?
Kommentieren
heyhey83
  • Forum-Beiträge: 51

20.04.2020, 14:00:26 via Website

wenn ich `@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
// Respond to the action bar's Up/Home button
case android.R.id.home:
//Home/back button
return true;
}
return super.onOptionsItemSelected(item);
}

muss ich das in der zweiten Activity einbauen ?`

Hilfreich?
Kommentieren
Jokel
  • Forum-Beiträge: 1.527

20.04.2020, 15:00:39 via Website

Wenn du in der zweiten activity zurück zur ersten mittels der appbar willst.
Machst du das genau so wie in der ersten. Natürlich oder ambesten mit einer zweiten Menue2.xml Datei.

Hilfreich?
Pascal P.
Kommentieren
heyhey83
  • Forum-Beiträge: 51

20.04.2020, 15:20:07 via Website

Ich habe einfach jetzt eine zweite menu.xml erstellt und das so gemacht und es wunderbar.

 @Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.back, menu);
    return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.menu2:
            switchToActivity();
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}


public void switchToActivity() {
    Intent intent = new Intent(this, MainActivity.class);
    startActivity(intent);
}
Hilfreich?
Kommentieren