Java 切换多个按钮的可见性
在我的应用程序中,我试图在RealViewSwitcher中切换两个透明按钮的可见性(我知道这相当粗糙)。我正在根据RealViewSwitcher的当前页面更改可见性。我可以让第一个按钮工作,但是第二个按钮从未激活。这是我的密码: ///////////////Java 切换多个按钮的可见性,java,android,android-layout,android-intent,visibility,Java,Android,Android Layout,Android Intent,Visibility,在我的应用程序中,我试图在RealViewSwitcher中切换两个透明按钮的可见性(我知道这相当粗糙)。我正在根据RealViewSwitcher的当前页面更改可见性。我可以让第一个按钮工作,但是第二个按钮从未激活。这是我的密码: /////////////// if(realViewSwitcher.getCurrentScreen() == 0) { final Button btn1 = (Button)findViewById(R.id.btn1);
if(realViewSwitcher.getCurrentScreen() == 0)
{
final Button btn1 = (Button)findViewById(R.id.btn1);
btn1.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.addCategory(Intent.CATEGORY_BROWSABLE);
intent.setData(Uri.parse("http://www.test.com"));
startActivity(intent);
btn1.setVisibility(View.GONE);
}
});
}
else if(realViewSwitcher.getCurrentScreen() == 2)
{
final Button btn2 = (Button)findViewById(R.id.btn2);
btn2.setVisibility(0);
btn2.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
Intent intent = new Intent(Intent.ACTION_SEND);
String[] tos = { "info@email.com" };
intent.putExtra(Intent.EXTRA_EMAIL, tos);
intent.putExtra(Intent.EXTRA_TEXT, "body");
intent.putExtra(Intent.EXTRA_SUBJECT, "subject");
intent.setType("message/rfc882");
Intent.createChooser(intent, "Choose Email Client");
}
});
}
///////////////
//end
/////////////////////
这是xml
<Button
android:id="@+id/btn1"
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@null"/>
<Button
android:id="@+id/btn2"
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@null"
android:visibility="gone"/>
您的代码只需要稍微清理一下
onCreate()
或任何适合您的地方声明它们getCurrentWindow()
设置开关。如果。。。否则如果。。。否则,如果…final Button btn1 = (Button) findViewById(R.id.btn1);
final Button btn2 = (Button )findViewById(R.id.btn2);
//Inside onCreate() or similar
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.addCategory(Intent.CATEGORY_BROWSABLE);
intent.setData(Uri.parse("http://www.test.com"));
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); //Required to start a new activity
startActivity(intent);
btn1.setVisibility(View.GONE);
}
});
//In the same place
btn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_SEND);
String[] tos = { "info@email.com" };
intent.putExtra(Intent.EXTRA_EMAIL, tos);
intent.putExtra(Intent.EXTRA_TEXT, "body");
intent.putExtra(Intent.EXTRA_SUBJECT, "subject");
intent.setType("message/rfc882");
Intent.createChooser(intent, "Choose Email");
btn2.setVisibility(View.VISIBLE);
}
});
//Later, in your other functional code
switch (realViewSwitcher.getCurrentScreen()) {
case 0:
//do your stuff
break;
case 2:
//other stuff
break;
default: //If you need it
throw new Exception("Oops...");
}
你的代码只需要稍微清理一下
onCreate()
或任何适合您的地方声明它们getCurrentWindow()
设置开关。如果。。。否则如果。。。否则,如果…final Button btn1 = (Button) findViewById(R.id.btn1);
final Button btn2 = (Button )findViewById(R.id.btn2);
//Inside onCreate() or similar
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.addCategory(Intent.CATEGORY_BROWSABLE);
intent.setData(Uri.parse("http://www.test.com"));
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); //Required to start a new activity
startActivity(intent);
btn1.setVisibility(View.GONE);
}
});
//In the same place
btn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_SEND);
String[] tos = { "info@email.com" };
intent.putExtra(Intent.EXTRA_EMAIL, tos);
intent.putExtra(Intent.EXTRA_TEXT, "body");
intent.putExtra(Intent.EXTRA_SUBJECT, "subject");
intent.setType("message/rfc882");
Intent.createChooser(intent, "Choose Email");
btn2.setVisibility(View.VISIBLE);
}
});
//Later, in your other functional code
switch (realViewSwitcher.getCurrentScreen()) {
case 0:
//do your stuff
break;
case 2:
//other stuff
break;
default: //If you need it
throw new Exception("Oops...");
}
不要为setVisibility之类的调用硬编码int值。始终使用View.GONE等。如果(realViewSwitcher.getCurrentScreen()==2)应为else如果(realViewSwitcher.getCurrentScreen()==1)(将2更改为1)?如果您可以发布完整的布局XML,这将很有帮助。它必须等于2,从而引用realViewSwitcher的第三页。只有第一页和第三页上有超链接活动。第二页和第四页只是文本。我的xml马上就要发布了,谢谢。不要为setVisibility之类的调用硬编码int值。始终使用View.GONE等。如果(realViewSwitcher.getCurrentScreen()==2)应为else如果(realViewSwitcher.getCurrentScreen()==1)(将2更改为1)?如果您可以发布完整的布局XML,这将很有帮助。它必须等于2,从而引用realViewSwitcher的第三页。只有第一页和第三页上有超链接活动。第二页和第四页只是文本。我的xml马上就要发布了,谢谢。太棒了!谢谢你的帮助,我会试一试的!太棒了!谢谢你的帮助,我会试一试的!