我的 Activity 中有两个不同的按钮,还有一个 if 语句来显示它们...
我的 if 语句运行良好并显示了正确的按钮,但是当我单击其中一个按钮时,它没有执行任何操作! (实际上,它根本不可点击!)
if (isNeeded)
{
// buttonImportant is not clickable
buttonImportant.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d("LOG", "Clicked!"); // Even this log won't work!
Intent intentDetailsActivity = new Intent(MainActivity.this, DetailsActivity.class);
intentDetailsActivity.putExtra("extraPosition", String.valueOf(position));
startActivity(intentDetailsActivity);
}
});
linearLayoutImportant.setVisibility(View.VISIBLE); // This line is working
}
if (!isNeeded)
{
// buttonNormal is working well!
buttonNormal.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
linearLayoutNormal.setVisibility(View.GONE);
Intent intentDetailsActivity = new Intent(MainActivity.this, DetailsActivity.class);
intentDetailsActivity.putExtra("extraPosition", String.valueOf(position));
startActivity(intentDetailsActivity);
}
});
linearLayoutNormal.setVisibility(View.VISIBLE); // And this one is not working too!
}
问题是,它不会返回任何错误或日志,知道是什么问题!这是我禁用按钮的日志...(我没有)
我检查了它是否用于声明,但是一切都被声明好了......
我检查了XML,那里也没有问题:
<LinearLayout
android:id="@+id/linearLayoutImportant"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="50dp"
android:layout_centerInParent="true"
android:gravity="center_vertical|center_horizontal"
android:orientation="vertical"
android:visibility="gone" >
<TextView
android:id="@+id/textViewImportant"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical|center_horizontal"
android:text="@string/important"
android:textSize="20sp"
android:textColor="#FFFFFF"
android:textStyle="bold" />
<Button
android:id="@+id/buttonImportant"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="@string/details" />
</LinearLayout>
...
...
<LinearLayout
android:id="@+id/linearLayoutNormal"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_marginTop="25dp"
android:orientation="vertical"
android:visibility="gone" >
<Button
android:id="@+id/buttonClose"
android:layout_width="25dp"
android:layout_height="25dp"
android:layout_gravity="end"
android:background="@android:drawable/ic_menu_close_clear_cancel" />
<TextView
android:id="@+id/textViewNormal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="5dp"
android:layout_gravity="center_horizontal"
android:gravity="center_vertical|center_horizontal"
android:text="@string/normal"
android:textStyle="bold" />
<Button
android:id="@+id/buttonNormal"
android:layout_width="wrap_content"
android:layout_height="40dp"
android:layout_margin="2dp"
android:layout_gravity="center_horizontal"
android:text="@string/details" />
</LinearLayout>
编辑:
声明如下:
LinearLayout linearLayoutImportant, linearLayoutNormal;
Button buttonImportant, buttonClose, buttonNormal;
...
...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
linearLayoutImportant = (LinearLayout) findViewById(R.id.linearLayoutImportant );
buttonImportant = (Button) findViewById(R.id.buttonImportant);
buttonClose = (Button) findViewById(R.id.buttonClose);
buttonClose .setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
linearLayoutNormal.setVisibility(View.GONE);
}
});
buttonNormal = (Button) findViewById(R.id.buttonNormal);
linearLayoutNormal = (LinearLayout) findViewById(R.id.linearLayoutNormal);
}
编辑 2:
好吧各位,可能是我没说清楚...
isNeeded
是一个变量,我从另一个地方控制它...
当我让它为 false 时,第二个 if
会很好地执行,当我让它为 true 时,第一个 if
也会执行,但只有按钮不可点击!
编辑 3:
我还检查了 .setEnabled(true);
或 .setClickable(true);
,仍然无法正常工作...:/
已解决:
我使用了 HierarchyViewer 并发现了问题。问题出在 XML 中……我在第二个按钮上有一个 ListView,但它是空的,所以我认为那里什么都没有……
对不起大家...
最佳答案
我使用了 HierarchyViewer 并发现了问题。问题出在 XML 中……我在第二个按钮上有一个 ListView,但它是空的,所以我认为那里什么都没有……
对不起大家...
关于java - 按钮 setOnClickListener 不适用于一个按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33808765/