我的活动中有两个不同的按钮,还有一个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);
}
好吧,伙计们,也许我没有说清楚......
isNeeded
是一个变量,我从另一个地方控制它......
当我将其设为false时,第二个if
将会很好地执行,当我将其设为true时,第一个if
也将执行,但只有按钮不可点击!
我还检查了.setEnabled(true);
或.setClickable(true);
,仍然无效...:/
我使用了HierarchyViewer并发现了问题。问题出在XML ......我在第二个按钮上面有一个ListView,但是它是空的,所以我什么也没想到......
对不起每个人......
答案 0 :(得分:1)
我使用了HierarchyViewer并发现了问题。问题出在XML ......我在第二个按钮上面有一个ListView,但是它是空的,所以我觉得没有什么...
对不起每个人......
答案 1 :(得分:0)
尝试不使用if语句,以便知道是否是验证问题并且您只设置一个侦听器
答案 2 :(得分:0)
布尔变量isNeeded
只能取两个值中的一个,无论是true还是false。因此,只会执行一个if条件。
由于只有一个条件成立,因此您只需将onClickListener
设置为其中一个按钮,因此另一个按钮不会被点击,而onClick
中的日志消息也是如此方法不会在日志中显示。
希望这能回答你的问题。 一切顺利:)
答案 3 :(得分:0)
在
之前设置isNeeded = true
if (isNeeded)
{
// buttonImportant is not clickable
buttonImportant.setOnClickListener(new View.OnClickListener() {
然后再次测试。 祝你好运!
答案 4 :(得分:0)