Hallo
Also Java macht mich bald Irre.
Da funktioniert alles mal ganz einfach und man ändert eine Kleinigkeit und schon gehen die Problem von vorne los.
Ich habe Button usw. auf der Main Activity diese wenn ich Anklicke oder... dann startet eine ExternalOnClickListener Class. und führt funktionen aus. (= funktionen für eine Datenbank = Speichern, Update usw.)
Das funktioniert auch alles Perfekt.
Nun wollte ich die Buttons ins Menü verfrachten. Einfach um Platz zu sparen.
Das sollte doch nicht so schwer sein > dachte ich zumindest.
Aktuell übertrage ich den "listener" in die ExternalOnClickListerner Class mit dem druck auf den Button btnAddData. (oder auch mit btnUpdataData usw.)
Wie gesagt das funktioniert auch
Wenn ich ein Menü einfüge funktioniert das ja scheinbar nicht mehr so.
Dort muss man ja zwei Methoden (anstatt nur
einfügen.
Hier die 2 Methoden in der MainActivity Class
//@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_main, menu);
//return true;
return super.onCreateOptionsMenu(menu)
}
//@Override
public boolean onOptionsItemSelected(MenuItem item) {
//mAdd = (Menu) findViewById(R.id.id_menu_add);
// ExternalOnClickListener listener = new ExternalOnClickListener(this);
switch (item.getItemId()) {
case R.id.id_menu_add: // = der Menü "Button"
{
// ?????????????????????????????
break;
}
case R.id.id_menu_delete: {
break;
}
case R.id.id_menu_update: {
break;
}
}
return true;
}
Alles anzeigen
Was muss ich in "onOptionItemSelected" (oder anders) für einen Code einfügen damit ich im Grunde das Selbe erreiche wie augenblicklich mit btnForward.setOnClickListener(listener);
Ich hoffe mein Problem ist irgendwie verständlich rüber gekommen.
Danke schon mal für die Hilfe.
Gruß
Hier mal ein Bild und den Code zum Verständniss.
Hier der Code der Main Activity
public class MainActivity extends AppCompatActivity {
public Button btnAddData;
......
RadioButton etRadio;
CheckBox etCheckbox;
public Menu mAdd;
public boolean test;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
etName1 = (EditText) findViewById(R.id.editText1);
etName2 = (EditText) findViewById(R.id.editText2);
etID = (EditText) findViewById(R.id.editTextID);
btnAddData = (Button) findViewById(R.id.buttonAddData);
btnViewData = (Button) findViewById(R.id.buttonViewData);
btnUpdate = (Button) findViewById(R.id.buttonUpdate);
btnDelete = (Button) findViewById(R.id.buttonDelete);
btnForward = (Button) findViewById(R.id.buttonForward);
btnBackward = (Button) findViewById(R.id.buttonBackward); // btn = button
etRadio = (RadioButton) findViewById(R.id.radioButton1); //et = editText
etCheckbox = (CheckBox) findViewById(R.id.checkBox1); //
spSpinner = (Spinner) findViewById(R.id.spinner1);
sbSeekbar = (SeekBar) findViewById(R.id.seekBar1);
btnViewDataList = (Button) findViewById(R.id.buttonViewDataList);
ExternalOnClickListener listener = new ExternalOnClickListener(this);
listener.et1Name2 = etName2; // die Listener sind die Buttons und seekbars welche dann als Status und Inhalt mit in die External Activity übergeben werden
listener.et1Name1 = etName1;
listener.et1ID = etID;
listener.et1Radio = etRadio;
listener.sp1Spinner = spSpinner;
listener.sb1Seekbar = sbSeekbar;
// hier werden die OnClickListeners von listener der Buttons an die Classe übergeben
// btnForward = (Button) findViewById(R.id.buttonForward);
btnForward.setOnClickListener(listener); // hier übergibt er den Button als onclicklistener
// btnBackward =(Button) findViewById(R.id.buttonBackward);
btnBackward.setOnClickListener(listener);
// btnViewData = (Button) findViewById(R.id.buttonViewData);
btnViewData.setOnClickListener(listener);
// btnAddData = (Button) findViewById(R.id.buttonAddData);
btnAddData.setOnClickListener(listener);
// btnUpdate = (Button) findViewById(R.id.buttonUpdate);
btnUpdate.setOnClickListener(listener);
// btnDelete = (Button) findViewById(R.id.buttonDelete);
btnDelete.setOnClickListener(listener);
btnViewDataList.setOnClickListener(new View.OnClickListener() // eine extra LitsView erzeugen
{
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, ListDataActivity.class);
// startNewActivity.putExtra(EXTRA_MESSAGE, "message");
startActivity(intent);
}
});
}
//mAdd = (Menu) findViewById(R.id.id_menu_add);
//@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_main, menu);
return true;
//return super.onCreateOptionsMenu(menu)
}
//@Override
public boolean onOptionsItemSelected(MenuItem item) {
mAdd = (Menu) findViewById(R.id.id_menu_add);
// ExternalOnClickListener listener = new ExternalOnClickListener(this);
switch (item.getItemId()) {
case R.id.id_menu_add:
{
break;
}
case R.id.id_menu_delete: {
break;
}
case R.id.id_menu_update: {
break;
}
}
return true;
}
}
Alles anzeigen
ExternalOnClickListener
/**
* Created by Internet on 30.08.2017.
*/
class ExternalOnClickListener implements View.OnClickListener {
public EditText et1Name1;
public EditText et1Name2;
public EditText et1ID;
public RadioButton et1Radio;
public Spinner sp1Spinner;
public SeekBar sb1Seekbar;
public int pos;
public Context context; // Context ist wichtig, damit get Resources bei "Icon" funktioniert. // muss noch herausfinden was das überhaupt bedeutet
public ExternalOnClickListener(Context current)
{
this.context = current;
}
@Override public void onClick (View v)
{
// TODO: add code here
DataBaseHelper butterflyDB = new DataBaseHelper(this.context);
Cursor cursor = butterflyDB.getFullData();
// hier Definition welcher Button gerade gedrückt wurde.
if (cursor.getCount() >= pos) cursor.moveToPosition(pos);
switch (v.getId())
{
case R.id.buttonForward: // hier vergleicht er die v.getID() des übergebenen OnCLickLIsterners mit der R.id des buttons.
if (cursor.getPosition() < cursor.getCount() - 1)
{
cursor.moveToNext();
pos = cursor.getPosition();
}
break;
case R.id.buttonBackward:
if (cursor.getPosition() > 0)
{
cursor.moveToPrevious();
pos = cursor.getPosition();
}
break;
case R.id.buttonViewData:
Cursor data = butterflyDB.showData();
if(data.getCount() == 0){
//message
display("Error","No Data Found");
return;
}
StringBuffer buffer = new StringBuffer();
while(data.moveToNext()) {
buffer.append("IDx " + data.getString(0) + "\n"); // 0 = die Erste Spalte in der Datenbank
buffer.append("NAME1x " + data.getString(1) + "\n");
buffer.append("NAME2x " + data.getString(2) + "\n");
buffer.append("RBx " + data.getString(3) + "\n");
buffer.append("SPx " + data.getInt(4) + "\n");
buffer.append("SBx " + data.getInt(5) + "\n");
}
//message
display("All stored Data", buffer.toString());
// return;
break;
case R.id.buttonAddData:
{
String name1 = et1Name1.getText().toString();
String name2 = et1Name2.getText().toString();
String rb1 = Boolean.toString(et1Radio.isChecked()); // if (et1Radio.isChecked()){ //Integer rb1 ;
Integer sp1 = sp1Spinner.getSelectedItemPosition();
Integer sb1 = sb1Seekbar.getProgress();
boolean insertData = butterflyDB.addData(name1,name2,rb1,sp1,sb1);
if (insertData == true){
Toast.makeText(context, "Data Succsessfully Transfered", Toast.LENGTH_LONG).show();
}
else { Toast.makeText(context, "Data Wrong Transfered", Toast.LENGTH_LONG).show();
}
break;
}
case R.id.buttonUpdate:
{
......
Alles anzeigen