在通用 Utils 文件中使用 Android 菜单代码
Using Android menu code in common Utils File
我正在尝试在 Utils.java
文件中实现我的菜单。好吧,到目前为止一切顺利,菜单正常显示,但当我单击任何菜单项时,应用程序停止工作。我似乎没有找到问题所在,非常感谢您的建议。我的菜单、实用程序和 activity 文件的代码如下:
Utils.java
package com.package.name;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
public class Utils extends Activity{
private Context _context;
public Utils(Context context){
this._context = context;
}
public void menuSwitch(int item) {
switch (item) {
case R.id.menu_one:
startActivity(new Intent(getApplicationContext(),
MainActivity.class));
case R.id.menu_two:
startActivity(new Intent(getApplicationContext(),
MessageActivity.class));
case R.id.menu_three:
startActivity(new Intent(getApplicationContext(),
LocateActivity.class));
case R.id.menu_four:
startActivity(new Intent(this,
AboutActivity.class));
}
}
}
menu_main.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity">
<item android:id="@+id/menu_one" android:title="@string/menu_one" />
<item android:id="@+id/menu_two" android:title="@string/menu_two" />
<item android:id="@+id/menu_three" android:title="@string/menu_three" />
<item android:id="@+id/menu_four" android:title="@string/menu_four" />
</menu>
menuActivity.java
package com.package.name;
import android.app.ListActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
public class DatabaseActivity extends ListActivity {
Utils util;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_database);
util = new Utils(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
util.menuSwitch(item.getItemId());
return true;
}
}
你正在使用 startactivity 的 Util class ,但它应该是 class 的菜单在那里,因此你应该使用
_context.startactivity(new Intent(_context,wahteverclass.class))
您不应延长 Utils
class。用这个替换您的代码。
public class Utils{
private Context _context;
public Utils(Context context){
this._context = context;
}
public void menuSwitch(int item) {
switch (item) {
case R.id.menu_one:
_context.startActivity(new Intent(_context.getApplicationContext(),
MainActivity.class));
case R.id.menu_two:
_context.startActivity(new Intent(_context.getApplicationContext(),
MessageActivity.class));
case R.id.menu_three:
_context.startActivity(new Intent(_context.getApplicationContext(),
LocateActivity.class));
case R.id.menu_four:
_context.startActivity(new Intent(_context.getApplicationContext(),
AboutActivity.class));
}
}
}
我正在尝试在 Utils.java
文件中实现我的菜单。好吧,到目前为止一切顺利,菜单正常显示,但当我单击任何菜单项时,应用程序停止工作。我似乎没有找到问题所在,非常感谢您的建议。我的菜单、实用程序和 activity 文件的代码如下:
Utils.java
package com.package.name;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
public class Utils extends Activity{
private Context _context;
public Utils(Context context){
this._context = context;
}
public void menuSwitch(int item) {
switch (item) {
case R.id.menu_one:
startActivity(new Intent(getApplicationContext(),
MainActivity.class));
case R.id.menu_two:
startActivity(new Intent(getApplicationContext(),
MessageActivity.class));
case R.id.menu_three:
startActivity(new Intent(getApplicationContext(),
LocateActivity.class));
case R.id.menu_four:
startActivity(new Intent(this,
AboutActivity.class));
}
}
}
menu_main.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity">
<item android:id="@+id/menu_one" android:title="@string/menu_one" />
<item android:id="@+id/menu_two" android:title="@string/menu_two" />
<item android:id="@+id/menu_three" android:title="@string/menu_three" />
<item android:id="@+id/menu_four" android:title="@string/menu_four" />
</menu>
menuActivity.java
package com.package.name;
import android.app.ListActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
public class DatabaseActivity extends ListActivity {
Utils util;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_database);
util = new Utils(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
util.menuSwitch(item.getItemId());
return true;
}
}
你正在使用 startactivity 的 Util class ,但它应该是 class 的菜单在那里,因此你应该使用
_context.startactivity(new Intent(_context,wahteverclass.class))
您不应延长 Utils
class。用这个替换您的代码。
public class Utils{
private Context _context;
public Utils(Context context){
this._context = context;
}
public void menuSwitch(int item) {
switch (item) {
case R.id.menu_one:
_context.startActivity(new Intent(_context.getApplicationContext(),
MainActivity.class));
case R.id.menu_two:
_context.startActivity(new Intent(_context.getApplicationContext(),
MessageActivity.class));
case R.id.menu_three:
_context.startActivity(new Intent(_context.getApplicationContext(),
LocateActivity.class));
case R.id.menu_four:
_context.startActivity(new Intent(_context.getApplicationContext(),
AboutActivity.class));
}
}
}