我有两个按钮的非常奇怪的行为:
<Button
android:id="@+id/main_button_logout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/main_button_measure"
android:layout_centerHorizontal="true"
android:layout_marginTop="76dp"
android:text="@string/button_logout" />
<Button
android:id="@+id/main_button_measure"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/main_button_logout"
android:layout_alignStart="@+id/main_button_logout"
android:layout_alignParentTop="true"
android:layout_marginTop="194dp"
android:text="@string/button_measure" />
我在我的主要活动中初始化它们:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.sessionManager = new SessionManager(this);
this.sessionManager.login();
this.setContentView(R.layout.activity_main);
this.buttonMeasure = (Button)this.findViewById(R.id.main_button_measure);
this.buttonMeasure.setOnClickListener(this);
this.buttonLogout = (Button)this.findViewById(R.id.main_button_logout);
this.buttonLogout.setOnClickListener(this);
}
我的点击监听器:
public void onClick(View view) {
switch(view.getId()) {
case R.id.main_button_measure : this.readNFC(view); break;
case R.id.main_button_logout : this.sessionManager.logout(); break;
}
}
现在问题是:每当我按下我的测量按钮时,每次都会调用注销 我调用我的注销按钮调用readNFC。那有什么不对吗?
答案 0 :(得分:0)
当您更改布局时会发生这种情况,例如只重建了部分应用程序(其余部分,例如,源代码将使用之前的构建工件,如果它们没有更改)和具有相同名称的资源ID在xml布局中,java源实际上将转换为不同的int ID。
尝试在onCreate()
中放置一个断点,并检查您设置点击监听器的2 Button
的详细信息,很可能this.buttonMeasure
将引用退出按钮
(例如,将具有76dp的上边距),反之亦然。
所以只需清理和重建,它应该可以解决您的问题。 你可以把它归咎于构建工具;)