2017-08-30 98 views
0

我正在学习为android编码应用程序,我试图编写一个读取QR码的应用程序,但我想添加一个选项菜单。我有一个小代码,但是当我尝试添加QR阅读器应用程序时,菜单不显示。你能告诉我到目前为止我有什么问题吗?将选项菜单添加到Android Studio中的QR阅读器应用程序?

MainActivity.java

import android.app.Activity; 
import android.os.Bundle; 

import android.view.Menu; 
import android.view.MenuItem; 
import android.widget.Toast; 

import android.view.View; 
import android.app.AlertDialog; 
import android.util.Log; 
import com.google.zxing.Result; 
import me.dm7.barcodescanner.zxing.ZXingScannerView; 

public class MainActivity extends Activity implements ZXingScannerView.ResultHandler { 
    private ZXingScannerView mScannerView; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
    } 
    // Here I added the menu to the qr app 
    @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; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
      case R.id.item1: 
       Toast.makeText(getApplicationContext(),"Item 1 Selected",Toast.LENGTH_LONG).show(); 
       return true; 

      case R.id.item2: 
       Toast.makeText(getApplicationContext(),"Item 2 Selected",Toast.LENGTH_LONG).show(); 
       return true; 

      case R.id.item3: 
       Toast.makeText(getApplicationContext(),"Item 3 Selected",Toast.LENGTH_LONG).show(); 
       return true; 

      default: 
       return super.onOptionsItemSelected(item); 
     } 
    } 
//Here ends the part of the menu 

    public void onClick(View v){ 
     mScannerView = new ZXingScannerView(this); 
     setContentView(mScannerView); 
     mScannerView.setResultHandler(this); 
     mScannerView.startCamera(); 
    } 

    @Override 
    protected void onPause() { 
     super.onPause(); 
     mScannerView.stopCamera(); 
    } 

    @Override 
    public void handleResult(Result result) { 
     Log.w("handleResult", result.getText()); 
     AlertDialog.Builder builder = new AlertDialog.Builder(this); 
     builder.setTitle("Scan result"); 
     builder.setMessage(result.getText()); 
     AlertDialog alertDialog = builder.create(); 
     alertDialog.show(); 

    } 
} 

menu.xml文件

<menu xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item android:id="@+id/item1" 
     android:title="Item 1"/> 
    <item android:id="@+id/item2" 
     android:title="Item 2"/> 
    <item android:id="@+id/item3" 
     android:title="Item 3"/> 
</menu> 

activity_main.xml中

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <GridLayout 
     android:layout_width="match_parent" 
     android:layout_height="114dp"> 

     <Button 
      android:id="@+id/button" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_column="0" 
      android:layout_row="3" 
      android:onClick="onClick" 
      android:text="Scan QR" /> 
    </GridLayout> 
</LinearLayout> 

我知道,选项菜单自身工作,因为我作为一个不同的应用程序单独进行测试,并且qr阅读器自行工作,但如果我尝试将它们组合在一起,菜单不在那里。我是一名编程android应用程序的新手,所以我会感谢您的指导。由于

回答

0

你提供你的菜单名称为menu.xml文件,而是你给getMenuInflater().inflate(R.menu.main, menu);

你应该

getMenuInflater().inflate(R.menu.menu, menu);

+0

更换

getMenuInflater().inflate(R.menu.main, menu);

是的,我有一个错字在那里,我改变了它,但结果是一样的。该应用程序如下所示:http://i.imgur.com/WVbn1nB.png –

+0

您是否设置了主题? –

相关问题