2014-01-24 5 views
0

Всякий раз, когда я нажимаю одну из двух кнопок изображения (EditButton, SaveButton), мое приложение падает.ImageButton crashes app

Ошибка та же каждый раз:

java.lang.IllegalStateException: Не удалось найти метод onSaveClicked (вид) в деятельности класса com.example.groceryrunner.MainActivity для обработчика OnClick на просмотр класс android.widget.ImageButton с идентификатором «» SaveButton

дело в том, я даже не метод onSaveClicked (вид), в любом случае в моем XML. Я пробовал всевозможные комбинации с фактическим методом, по которому кнопка должна идти при нажатии (onCreateLGClick), но это ничего не влияет, так как мое приложение так и не дошло. Кроме того, единственная кнопка, которая работает, несовместима, во много раз ничего не происходит или занимает 10 кликов, чтобы сделать свое событие выключенным, даже если оно работает раньше (кнопка CreateLG).

createlgmenu (XML):

<?xml version="1.0" encoding="utf-8"?> 
    <menu xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item 
     android:id="@+id/Create_List" 
     android:title="@string/Create_List"/> 

    <item 
     android:id="@+id/Create_Food_Group" 
     android:title="@string/Create_Food_Group"/> 
    </menu> 

меню (XML):

<menu xmlns:android="http://schemas.android.com/apk/res/android" > 
<item 
    android:id="@+id/action_settings" 
    android:orderInCategory="100" 
    android:showAsAction="never" 
    android:title="@string/action_settings"/> 
</menu> 

активность основная (XML):

<TextView 
    android:id="@+id/GetStarted" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignTop="@+id/ListName" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="86dp" 
    android:text="Select or Create a list to get started!" 
    android:textSize="20sp" /> 

<ImageButton 
    android:id="@+id/EditButton" 
    android:layout_width="50dp" 
    android:layout_height="50dp" 
    android:layout_alignRight="@+id/SaveButton" 
    android:layout_alignTop="@+id/ListName" 
    android:layout_marginRight="32dp" 
    android:background="@null" 
    android:scaleType="centerInside" 
    android:src="@drawable/edit_button" 
    android:onClick="onCreateLGClick" /> 

<Button 
    android:id="@+id/CreateLG" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignTop="@+id/ListName" 
    android:layout_toRightOf="@+id/ListsButton" 
    android:background="@null" 
    android:text="+" 
    android:textSize="40sp" 
    android:onClick="onCreateLGClick" /> 

<TextView 
    android:id="@+id/ListName" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="26dp" 
    android:text="Grocery Runner" 
    android:textSize="22sp" 
    android:onClick="onCreateLGClick" /> 

<Button 
    android:id="@+id/ListsButton" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignBottom="@+id/EditButton" 
    android:layout_alignLeft="@+id/GetStarted" 
    android:background="@null" 
    android:text="≡" 
    android:textSize="40sp" /> 

<ImageButton 
    android:id="@+id/SaveButton" 
    android:layout_width="50dp" 
    android:layout_height="50dp" 
    android:layout_alignRight="@+id/GetStarted" 
    android:layout_below="@+id/EditButton" 
    android:background="@null" 
    android:onClick="onCreateLGClick" 
    android:scaleType="centerInside" 
    android:src="@drawable/save_disk" /> 

</RelativeLayout> 

MainActivity.java:

package com.example.groceryrunner; 

import android.os.Bundle; 
import android.app.Activity; 
import android.app.AlertDialog; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.PopupMenu; 
import android.widget.TextView; 
import android.app.ActionBar; 
import android.content.DialogInterface; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 

public class MainActivity extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    //Button Save = (Button) this.findViewById(R.id.SaveButton); 
} 


@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

public void onCreateLGClick(View v) { 
    final int id = v.getId(); 
    /*switch (id) { 
    case R.id.CreateLG: 
     findViewById(R.id.GetStarted).setVisibility(View.INVISIBLE); 
     createLGMenu(v); 
     break; 
    case R.id.ListsButton: 
     findViewById(R.id.GetStarted).setVisibility(View.INVISIBLE); 
     createLGMenu(v); 
     break; 
    }*/ 
} 


public void createLGMenu(View v) { 
    PopupMenu LGMenu = new PopupMenu(this, v); 
    LGMenu.getMenuInflater().inflate(R.menu.createlgmenu, LGMenu.getMenu()); 
    LGMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { 

     @Override 
     public boolean onMenuItemClick(MenuItem item) { 
      String choice = new String((String) item.getTitle()); 
      if (choice == "Create_List") { 
       createListDialog(); 
      } 
      else if (choice == "Create_Group") { 
       createListDialog(); 
      } 
      return false; 
     } 
    }); 
    LGMenu.show(); 
} 

public AlertDialog.Builder dialogBuilder; 
private void createListDialog() { 
    dialogBuilder = new AlertDialog.Builder(this); 
    EditText textInput = new EditText(this); 

    dialogBuilder.setTitle("Create list"); 
    dialogBuilder.setMessage("Name your list: "); 
    dialogBuilder.setView(textInput); 
    dialogBuilder.setPositiveButton("Create", new DialogInterface.OnClickListener() { 

     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      findViewById(R.id.ListName).setVisibility(View.INVISIBLE); 
      //Toast.makeText(getApplicationContent(), "List has been created.", toast.LENGTH_SHORT); 
      // add list to ListsButton 
      //findViewById(R.id.ListName). -> Change ListName text to created list 
     } 
    }); 
    dialogBuilder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 

     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      //Toast.makeText(getApplicationContent(), "List has been created.", toast.LENGTH_SHORT); 
     } 
    }); 
    // Output 
    AlertDialog dialogue = dialogBuilder.create(); 
    dialogue.show(); 

    } 

} 
+0

опубликовать ваше createLGMenu.xml, также разместить меню XML под названием main.xml – Ogen

+0

Добавлено обоих. Благодарю. – user2100364

+0

Вы пробовали очистить свой проект? – Ogen

ответ

0

Хорошо, я нашел свое исправление! Во-первых, поскольку я столкнулся с другими ошибками, я только что сохранил свой код и удалил Eclipse и снова установил/извлек его с сайта Android. Кнопка больше не сбивает мое приложение.

Кроме того, XML-файлы, которые не были признаны были еще одно большое препятствие, что я исправил с помощью ADAMM:

1) Я удалил R импорт

2) закомментировал линии, давали мне ошибки в распознавании мои файлы XML

3) перезапущен Затмение & устроивший все

1

В вашем

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

Вы раздули меню main.xml. Вы уверены, что это не createlgmenu.xml, что вам нужно раздуть?

0

Попробуйте под своим рабочим током на моей стороне. Надежда будет работать и на вас.

public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     // Button Save = (Button) this.findViewById(R.id.SaveButton); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

    public void onCreateLGClick(View v) { 
     final int id = v.getId(); 

     switch (v.getId()) { 
     case R.id.CreateLG: 
      findViewById(R.id.GetStarted).setVisibility(View.INVISIBLE); 
      createLGMenu(v); 
      break; 
     case R.id.ListsButton: 
      findViewById(R.id.GetStarted).setVisibility(View.VISIBLE); 
      createLGMenu(v); 
      break; 
     } 

    } 

    public void createLGMenu(View v) { 
     PopupMenu LGMenu = new PopupMenu(this, v); 
     LGMenu.getMenuInflater().inflate(R.menu.createmenu, LGMenu.getMenu()); 
     LGMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { 

      @Override 
      public boolean onMenuItemClick(MenuItem item) { 
       switch (item.getItemId()) { 
       case R.id.Create_List: 
        createListDialog(); 
        break; 
       case R.id.Create_Food_Group: 
        createListDialog(); 
        break; 

       default: 
        break; 
       } 
       /* 
       * String choice = new String((String) item.getTitle()); if 
       * (choice.equalsIgnoreCase("Create_List")){ createListDialog(); 
       * } else if (choice.equalsIgnoreCase("Create_Group")) { 
       * createListDialog(); } 
       */ 
       return true; 
      } 
     }); 
     LGMenu.show(); 
    } 

    public AlertDialog.Builder dialogBuilder; 

    private void createListDialog() { 
     dialogBuilder = new AlertDialog.Builder(this); 
     EditText textInput = new EditText(this); 

     dialogBuilder.setTitle("Create list"); 
     dialogBuilder.setMessage("Name your list: "); 
     dialogBuilder.setView(textInput); 
     dialogBuilder.setPositiveButton("Create", 
       new DialogInterface.OnClickListener() { 

        @Override 
        public void onClick(DialogInterface dialog, int which) { 
         findViewById(R.id.ListName).setVisibility(
           View.INVISIBLE); 
         // Toast.makeText(getApplicationContent(), 
         // "List has been created.", toast.LENGTH_SHORT); 
         // add list to ListsButton 
         // findViewById(R.id.ListName). -> Change ListName text 
         // to created list 
        } 
       }); 
     dialogBuilder.setNegativeButton("Cancel", 
       new DialogInterface.OnClickListener() { 

        @Override 
        public void onClick(DialogInterface dialog, int which) { 
         // Toast.makeText(getApplicationContent(), 
         // "List has been created.", toast.LENGTH_SHORT); 
        } 
       }); 
     // Output 
     AlertDialog dialogue = dialogBuilder.create(); 
     dialogue.show(); 

    } 

} 
+0

Я попробую это, как только смогу, к сожалению, затмение не позволит мне попробовать что-либо, поскольку bin/resource.ap_ «не существует». Я пытаюсь использовать всевозможные решения, но пока не исправил их. Я бы переустановил Eclipse, но это моя папка, в которой отсутствует файл, который является проблемой. – user2100364