gpt4 book ai didi

java - 跨应用程序可用的方法?

转载 作者:搜寻专家 更新时间:2023-11-01 09:13:23 25 4
gpt4 key购买 nike

我 100% 确定这将是那些新手问题之一,但这里是......

有没有一种方法可以让我在一个 Activity 中编写一个方法并能够从其他 Activity 中访问它?

例子:我的应用程序中有六个 Activity ,每个 Activity 都有自己的 menu.xml,因为每个 Activity 的可用选项需要不同,并且我设置了这些菜单和菜单项,如下所示:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.calculator_menu, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
//Handle item selection
switch (item.getItemId()) {
case R.id.menuItem_calculator_Help:
helpDialogGo();
return true;
case R.id.menuItem_calculator_Settings:
//settingsActivityGo();
return true;
case R.id.menuItem_calculator_Share:
shareGo();
return true;
case android.R.id.home:
// app icon in Action Bar clicked; go home
Intent uptohome = new Intent(this, Main.class);
uptohome.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(uptohome);
return true;
default:
return super.onOptionsItemSelected(item);
}
}

其中一种方法的示例是:

private void helpDialogGo() {
Toast.makeText(this, "help", Toast.LENGTH_LONG).show();
AlertDialog.Builder alt_bld = new AlertDialog.Builder(this);
alt_bld.setMessage("Sorry, no help has been written since this application is still in development. This is a prerelease version.")
.setCancelable(false)
.setPositiveButton("Cool", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// Action for 'Yes' Button
dialog.cancel();
}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// Action for 'NO' Button
dialog.cancel();
}
});
AlertDialog alert = alt_bld.create();
// Title for AlertDialog
alert.setTitle("Pixel Help");
// Icon for AlertDialog
alert.setIcon(R.drawable.question);
alert.show();
}

那么有没有一种方法可以在所有 Activity 之间共享这个自定义方法,并在每个 Activity 中按下按钮时运行它,以避免在我的应用程序中复制大量代码?

如果是这样,有没有我可能会撞到的坑洼? (一些菜单项将打开对话框,其他菜单项将把用户带到一个新的 Activity )

最佳答案

您在每个 Activity 中都有类似的菜单项吗?即相同数量的项目但不同的行为?如是...如何创建一个覆盖 onCreateOptionsMenu 和 onOptionsItemSelected() 方法的 BaseActivity ..(正如您在上面的示例中给出的那样)。您的所有 Activity 都应继承自此 BaseActivity,然后覆盖菜单处理方法。例如。 helpDialogGo() 将转到新类(class)。

因此 BaseActivity 将具有 onCreateOptionsMenu 和 onOptionsItemSelected() 方法。加上所有 menuItem 操作(即 helpDialogGo() 等)作为空方法。继承的类将覆盖 menuItem 操作。

如果每个 Activity 中的菜单项不相似,您最好为每个 Activity 创建菜单。

编辑:

不确定您还期望什么。我以为我说得很清楚了。让我再试一次。

BaseActivity 扩展 Activity

BaseActivity extends Activity {

// Copy your onCreateOptionsMenu() and onOptionsItemSelected() methods here

protected void helpDialogGo() { }

// ... other methods
}

MyActivity1 扩展 BaseActivity

MyActivity1 extends BaseActivity {

// Copy your helpDialogGo() code in full here and then make
// any specific changes to menu behaviour based on activity.

}

MyActivity2 扩展 BaseActivity

MyActivity2 extends BaseActivity {
// Copy your helpDialogGo() code in full here and then make
// any specific changes to menu behaviour based on activity.
}

关于java - 跨应用程序可用的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6566804/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com