Ich möchte eine Absicht erstellen, die eine neue Aktivität startet, sobald auf ein Menüelement geklickt wird, bin mir jedoch nicht sicher, wie ich dies tun soll. Ich habe die Android-Dokumentation gelesen, aber meine Implementierung ist nicht korrekt. Eine Anleitung in die richtige Richtung würde helfen. Ich habe meinen Code unten aufgelistet und meine Problembereiche auskommentiert. Ich glaube, ich rufe die falsche Methode auf.
package com.jbsoft.SimpleFlashlight;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.*;
import android.view.MenuItem.OnMenuItemClickListener;
import android.widget.Button;
import android.widget.Toast;
public class SimpleFlashLightActivity extends Activity {
Button GreenButton; // Declare instances of buttons to use later
Button BlueButton;
private static final int OK_MENU_ITEM = Menu.FIRST;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
BlueButton = (Button) findViewById(R.id.bluebutton);
BlueButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
//Display msg when user clicks Blue Button
showColorChangeMsg();
// Switch Activities on click
Intent blueintent = new Intent(SimpleFlashLightActivity.this,
BlueFlashLightActivity.class);
startActivity(blueintent);
}
});
//Install listener for second button
GreenButton = (Button) findViewById(R.id.greenbutton);
GreenButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Display msg when user clicks Green Button
showColorChangeMsg();
Intent greenintent = new Intent(SimpleFlashLightActivity.this,
GreenFlashLightActivty.class);
startActivity(greenintent);
}
});
;
/**************************************************************************************/
// Method Declarations // THIS IS WHERE I'M HAVING A PROBLEM
MenuItem AddColorButton = (MenuItem)findViewById(R.id.menu_insert);
boolean onOptionsItemSelected(AddColorButton) {
Intent intent = new Intent(SimpleFlashLightActivity.this,
BlueFlashLightActivity.class);
startActivity(intent);
return true;
;
};
/****************************************************************************************/
}
private void showColorChangeMsg()
{
Toast msgtoast = Toast.makeText(this.getBaseContext(), "SWITCH COLOR!",
Toast.LENGTH_LONG);
msgtoast.show();
}
private void showMsg(String msg) {
Toast toast = Toast.makeText(this, msg, Toast.LENGTH_LONG);
toast.show();
}
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
MenuInflater mi = getMenuInflater();
mi.inflate(R.menu.list_menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case OK_MENU_ITEM:
showMsg("OK");
break;
}
return super.onOptionsItemSelected(item);
}
}
android
event-handling
menuitem
options-menu
onitemclicklistener
Jade Byfield
quelle
quelle
Fügen Sie den folgenden Code hinzu
quelle
Die Menüelementdatei sieht aus wie
res / menu / menu_main.xml
Java-Code sieht aus wie
src / MainActivity.java
Fügen Sie Ihrer AndroidManifest.xml-Datei folgenden Code hinzu
Ich hoffe es hilft dir.
quelle
Dieser Code ist Arbeit für mich
quelle
Zusätzlich zu den in Ihrer Frage gezeigten Optionen besteht die Möglichkeit, die Aktion direkt in Ihrer XML-Datei über das Menü zu implementieren, zum Beispiel:
Und für Ihre Java-Datei (Aktivitätsdatei) müssen Sie eine öffentliche Methode mit einem einzelnen Parameter vom Typ MenuItem implementieren, zum Beispiel:
HINWEIS: Diese Methode verhält sich ähnlich wie das onOptionsItemSelected (MenuItem-Element).
quelle
Ersetzen Sie Ihre
onOptionsItemSelected
als:Hier will ich von navigieren
DashboardActivity
zuSettingActivity
.quelle