2013-05-12 82 views
1

我遇到了运行2.2和2.3.5的Android设备的问题。版本。我一直在开发一个简单的应用程序,迄今为止我的任何代码都没有问题。自从我上次测试以来,菜单项已停止加载其他活动/点击运行内容,我真的不知道为什么,因为我重新加载了我的bin/gen文件夹,重新构建了项目,清理了它,但没有雪茄!为了清晰起见,我已将这些类包含在我的应用程序和Android清单中。菜单选项不能在Android 2.2和2.3.5上工作

包含用于应用程序导航

package rcahmw.prototype.crowdsnapcymru; 

import android.os.Bundle; 
import android.app.Activity; 
import android.content.Intent; 
import android.view.Menu; 
import android.view.MenuInflater; 
import android.view.MenuItem; 

public class CrowdSnapCymru extends Activity { 

MenuItem item; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_crowd_snap_cymru); 
} 

/** 
* Empty constructor for CrowdSnapCymru 
*/ 
public CrowdSnapCymru() { 

} 

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

public boolean onOptionsItemSelected(){ 
    switch(item.getItemId()) 
    { 
     case R.id.app_camera: 
      Intent firstIntent = new Intent(this, SnapCamera.class); 
      startActivity(firstIntent); 
      return true; 

     case R.id.app_dataentry: 
      Intent secondIntent = new Intent(this, DataEntry.class); 
      startActivity(secondIntent); 
      return true; 

     case R.id.app_upload: 
      Intent thirdIntent = new Intent(this, UploadRecord.class); 
      startActivity(thirdIntent); 
      return true; 

     case R.id.app_home: 
      Intent fourthIntent = new Intent(this, ImageSelector.class); 
      startActivity(fourthIntent); 
      return true; 

     case R.id.app_about: 
      Intent fifthIntent = new Intent(this, CrowdSnapCymru.class); 
      startActivity(fifthIntent); 
      return true; 

     default: 
      return super.onOptionsItemSelected(item); 
    } 
} 

}

另一活动,其利用原意代码

package rcahmw.prototype.crowdsnapcymru; 

import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuInflater; 
import android.view.MenuItem; 

public class UploadRecord extends CrowdSnapCymru { 

MenuItem item; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_upload_record); 
} 

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

public void loadMenuResponses() { 
    onOptionsItemSelected(item); 
} 

}

的意图主要活动

Android清单XML文件,并ACTION_BAR XML文件

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

<uses-sdk 
    android:minSdkVersion="8" 
    android:targetSdkVersion="17" /> 

<uses-permission android:name="android.hardware.camera" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/MyTheme" > 
    <activity 
     android:name="rcahmw.prototype.crowdsnapcymru.CrowdSnapCymru" 
     android:uiOptions="splitActionBarWhenNarrow" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity 
     android:name="rcahmw.prototype.crowdsnapcymru.SnapCamera" 
     android:uiOptions="splitActionBarWhenNarrow" > 
    </activity> 
    <activity 
     android:name="rcahmw.prototype.crowdsnapcymru.DataEntry" 
     android:uiOptions="splitActionBarWhenNarrow" > 
    </activity> 
    <activity 
     android:name="rcahmw.prototype.crowdsnapcymru.UploadRecord" 
     android:label="@string/title_activity_upload_record" 
     android:uiOptions="splitActionBarWhenNarrow" > 
    </activity> 
    <activity 
     android:name="rcahmw.prototype.crowdsnapcymru.Login" 
     android:label="@string/title_activity_login" 
     android:windowSoftInputMode="adjustResize|stateVisible">   
    </activity> 
    <activity 
     android:name="rcahmw.prototype.crowdsnapcymru.ImageSelector" 
     android:label="@string/title_activity_image_selector" 
     android:uiOptions="splitActionBarWhenNarrow" > 
    </activity> 
</application> 

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

<item android:id="@+id/app_camera" 
     android:title="@string/Camera" 
     android:icon="@drawable/ic_camera" 
     android:showAsAction="ifRoom|withText" /> 

<item android:id="@+id/app_dataentry" 
     android:title="@string/Edit" 
     android:icon="@drawable/ic_edit" 
     android:showAsAction="ifRoom|withText"/> 

<item android:id="@+id/app_upload" 
     android:title="@string/Upload" 
     android:icon="@drawable/ic_upload" 
     android:showAsAction="ifRoom|withText" /> 

<item android:id="@+id/app_about" 
    android:title="@string/About" 
    android:icon="@drawable/ic_about" 
    android:showAsAction="ifRoom|withText" /> 

任何人都可以找出问题吗?菜单按钮没有加载预期的意图。干杯。

回答

1

onOptionsItemSelected()应该重写

@Override 
public boolean onOptionsItemSelected(Menu item){ 
switch(item.getItemId()) 
{ 
    case R.id.app_camera: 
     Intent firstIntent = new Intent(this, SnapCamera.class); 
     startActivity(firstIntent); 
     return true; 

    case R.id.app_dataentry: 
     Intent secondIntent = new Intent(this, DataEntry.class); 
     startActivity(secondIntent); 
     return true; 

    case R.id.app_upload: 
     Intent thirdIntent = new Intent(this, UploadRecord.class); 
     startActivity(thirdIntent); 
     return true; 

    case R.id.app_home: 
     Intent fourthIntent = new Intent(this, ImageSelector.class); 
     startActivity(fourthIntent); 
     return true; 

    case R.id.app_about: 
     Intent fifthIntent = new Intent(this, CrowdSnapCymru.class); 
     startActivity(fifthIntent); 
     return true; 

    default: 
     return super.onOptionsItemSelected(item); 
} 
} 
+0

钉它。队友的欢呼声 :) – WebDevDanno 2013-05-12 01:36:09

0

使用像这样的菜单 - > menu.xml文件

相反的android:showAsAction = “ifRoom | withText”,这样使用。 android:showAsAction =“always”

希望它能工作。