2014-07-22 64 views
-1

我在寫一個android代碼...我在右上角做了一個菜單項(「+」)。正如你在我的代碼中看到的那樣,我已經定義了這個項目的OnClick,但是MyApp沒有運行,並且說不幸停了下來。在此之前,我用Android中的OnClick不起作用

public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
      case R.id.add: 
       // Toast.makeText(this, "Adding button selected", Toast.LENGTH_SHORT).show(); 
       return true; 
      default: 
       return true; 
     } 
    } 

當用戶點擊該項目,它的工作。但是我需要知道我該怎麼做?因爲在那之後我要進行佈局(對話),這樣,當我把這個項目是對話節目,我想我應該用這種方法,這樣做

myActivity:

package com.example.myapp; 

import android.app.Activity; 
import android.app.AlertDialog; 
import android.app.Dialog; 
import android.content.DialogInterface; 
import android.os.Bundle; 
import android.view.*; 
import android.widget.TextView; 
import android.widget.Toast; 

public class MyActivity extends Activity { 
    /** 
    * Called when the activity is first created. 
    */ 
    //@Override 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
    } 

    public boolean onCreateMenu(Menu menu) { 
     MenuInflater inflater = getMenuInflater(); 
     return true; 
    } 

    public boolean onCreateOptionsMenu(Menu menu) { 

     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.menu, menu); 
     return true; 
    } 

    public void AddOnClick (View view) { 
     Toast.makeText(this, "Button 1 pressed", 
       Toast.LENGTH_LONG).show(); 
    } 

} 

menu.xml文件:

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

<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@+id/add" 
      android:icon="@drawable/plus" 
      android:title="Adding" 
      android:orderInCategory="50" 
      android:showAsAction="always" 
      android:onClick="AddOnClick" 
    /> 
</menu> 

我在哪裏錯了?我的方式是展示對話方式嗎?還是我應該做點別的? TNX提前

+2

如果您的應用崩潰,請張貼堆棧跟蹤 – Shlublu

+1

刪除的android :onClick在菜單中,你不需要它 – Sandro

回答

-1
public boolean onCreateMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    return true; 
} 

變化是這樣的:

public boolean onCreateMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater().inflate(R.menu.addXml, menu); 
    return true; 
} 
+0

沒有辦法是正確的 – EpicPandaForce

+0

如果你認爲沒有辦法是正確的,你可以嘗試返回super.onCreateOptionsMenu(menu); – ihsanbal

+0

'inflate()'的返回值是'void'。你的代碼不會編譯。這將盡管缺乏格式化:@Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater()。inflate(R.menu.container,menu); return super.onCreateOptionsMenu(menu); } – EpicPandaForce

0

簽名是錯誤的。它應該是

public void AddOnClick (MenuItem item) 

因爲它被聲明內的菜單項

1

做如下,並刪除安卓的onClick在菜單

MenuInflater menuInflater = getMenuInflater(); 
     menuInflater.inflate(R.menu.addXml, menu); 
+0

return super.onCreateOptionsMenu(menu); – EpicPandaForce