Java Android全球功能及更多
我在android编程方面几乎没有知识,但愿意学习,所以除了代码片段之外,我还希望有链接和源代码。。。也就是说,这是我想要实现的目标 我正在制作一个有多个按钮的应用程序。这些按钮将用于各种活动,但始终会导致相同的活动。例如,button1将是主要活动的一部分,将转到button1.activity.class,但也可能出现在其他buttonX.activity.class中。无论它在哪里,单击它都会转到button1.activity.class。现在,我希望有一个全局函数,因为我可以从项目中的任何活动调用它,它可以做很多事情: 1.获取按钮的标签(不确定标签是否用于此,但这是我在脑海中设置的合适的东西) 2.onclick将打开具有特定标记名的活动,例如,如果标记内容为“Salt”,则将打开SaltActivity.class 总的来说,我希望它能像这样工作: openActivity(BTNSAL); 函数将查看名为(btnSalt)的按钮的当前活动,从标记中获取字符串,然后执行类似startActivity的操作(newintent(MainActivity.this、Salt或任何参数为.class)) 这应该是全局的,这样我就不必在所有可能的活动中都设置ClickListener上的每个按钮……我猜创建类似Util.class的东西,然后在需要时将其导入到acvtivites应该可以吗 如前所述,非常感谢代码片段、书籍、博客、示例和任何其他帮助。 希望这一切都有意义:)Java Android全球功能及更多,java,android,android-intent,globals,Java,Android,Android Intent,Globals,我在android编程方面几乎没有知识,但愿意学习,所以除了代码片段之外,我还希望有链接和源代码。。。也就是说,这是我想要实现的目标 我正在制作一个有多个按钮的应用程序。这些按钮将用于各种活动,但始终会导致相同的活动。例如,button1将是主要活动的一部分,将转到button1.activity.class,但也可能出现在其他buttonX.activity.class中。无论它在哪里,单击它都会转到button1.activity.class。现在,我希望有一个全局函数,因为我可以从项目中的
提前感谢我希望您对Java和继承有一点了解,即使您不了解Android。您需要让您的活动从基本活动继承 选项1 概括您想要的单个
onClick
方法的一个好方法是在活动类中定义它,例如BaseActivity
,如下所示:
public class BaseActivity extends Activity implements OnClickListener {
@Override
public void OnClick(View view) {
// The generalized code here:
String message = (String) view.getTag();
Intent theIntent = new Intent(BaseActivity.this, ThatOneActivity.class);
theIntent.putExtra("Your Key", message);
startActivity(theIntent);
}
}
在使用此方法的其他活动中,您只需执行以下操作:
public class SomeActivity extends BaseActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.yourLayout);
Button someButton = (Button) findViewById(R.id.yourButtonId);
// We still have to add an onclicklistener to every button,
// unless we've defined the onClick element in XML (see option 2)
button.setOnClickListener(this);
}
}
选项2
实现onClick
泛化的另一种方法是仍然有一个定义方法的基类,并向XML中添加一个元素,在其中定义按钮:
android:onClick="openActivity"
然后,您可以在BaseActivity
类中定义该方法,而无需向实现该方法的活动中的按钮添加任何侦听器:
public class BaseActivity extends Activity implements OnClickListener {
public void openActivity(View view) {
// The generalized code here:
String message = (String) view.getTag();
Intent theIntent = new Intent(BaseActivity.this, ThatOneActivity.class);
theIntent.putExtra("Your_Key", message);
startActivity(theIntent);
}
}
最后,在您刚刚开始的活动中(我称之为ThatOneActivity
),您可以通过其键检索添加到intent的消息:
getIntent().getStringExtra("Your_Key");
记住,硬编码键是在询问错误,因为有一天你可能会输入错误,这样就不起作用了。解决方案很简单:您可以选择一个很好的位置来放置一个公共静态最终字符串
,在其中定义键(BaseActivity
),并在整个代码中使用该常量