从此开始
<Button
android:onClick="onBtnClicked"
android:id="@+id/btn_edit_shared_preferences"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/btn_show_map"
android:layout_centerHorizontal="true"
android:text="Edit Shared Preferences" />
Here表示发送给onClick回调函数的唯一参数是View对象。
好吧,我可能需要一些“额外参数”,比如在这种情况下:我有一个处理活动的功能,所以它会是
openActivity(View v){..}
另一方面,我希望在布局中
:onclick="openActivity(activityClassName)"
做与此类似的事情的正确方法是什么?
答案 0 :(得分:2)
您可以将android:tag="YouActivity"
与android:onClick="openActivity"
现在您可以在Activity
中添加openActivity()
名称,如下所示:
void openActivity(View v)
{
String activityName = v.getTag().toString();
Class<?> aClass = null;
try {
aClass = Class.forName("your.package."+activityName);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
startActivity(new Intent(this, aClass));
}
答案 1 :(得分:0)
嗯,onClick
事件获取的仅查看对象参数,但您可以通过Context对象获取更多信息。
答案 2 :(得分:0)
单个按钮可以对应单个方法。没有办法通过额外的参数。例如,在您的情况下,您希望按钮启动活动。一种方法是编写一个方法来启动该活动。
<Button
android:onClick="launchPreferencesActivity"
android:id="@+id/btn_edit_shared_preferences"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/btn_show_map"
android:layout_centerHorizontal="true"
android:text="Edit Shared Preferences" />
然后在你的活动中:
public void launchPreferencesActivity(View v){
//start Activity
}
不同的按钮可以对应于处理click事件的不同方法。或者,如果需要,可以使用View参数来区分调用方法的视图并以此方式处理它。
如果还有其他因素可能会改变按钮的行为,您可以随时更改代码中的onClickListener。但一般来说,我认为上述方法可以更好地满足您的目标。