我有这段代码
root = new Root();
root.checkRootMethod2();
TextView=(TextView)view.findViewById(R.id.textView4);
if(root.checkRootMethod2()) {
TextView.setText(Html.fromHtml("<b>TEXT 01</b><br>"));
} else {
TextView.setText(Html.fromHtml("<b>TEXT 02</b><br>"));
}
try {
if (root.RootAvailibility() && (root.checkRootMethod3())) {
try {
Process process = Runtime.getRuntime().exec("su");
OutputStream stdin = process.getOutputStream();
stdin.flush();
stdin.close();
} catch(Exception e) {
}
TextView.append(Html.fromHtml(
"<b><font color=\"green\">TEXT 03</b></font>"));
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
root.busybox();
TextView.append(Html.fromHtml(
"<br><b><font color=\"green\">TEXT 04</b></font>"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch(Exception e) {
TextView.append(Html.fromHtml(
"<br><b><font color=\"red\">TEXT05</b></font>"));
}
我希望如果if (root.RootAvailibility() && (root.checkRootMethod3())) return true
查看说出某事的TextView
。如果返回false,则显示另一个显示其他内容的TextView。正如root.checkRootMethod2 ();
所发生的那样root.busybox ();
您是否知道如何做?现在始终可视化Text04
答案 0 :(得分:1)
try {
if (root.RootAvailibility() && (root.checkRootMethod3()))
{
try
{
/// your code ...
}
catch(Exception e){ }
TextView.append(Html.fromHtml("<b><font color=\"green\">TEXT 03</b></font>"));
}
}catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// Codes here runs always regardless of if clause.
您的案例中的代码(try
块)无论if
条件如何都会运行,因为try
块会清除if
块的范围。
将try
完全置于if
块内,或将if,else
个try
块括在一个{{1}}块中。
答案 1 :(得分:0)
我不知道在这里需要多次尝试/捕获:
try {
if (root.RootAvailibility() && (root.checkRootMethod3()))
{
try
{
您可以在上面的try / catch块中添加一个catch(Exception e),这将起到同样的作用。
其次,如果(root.RootAvailibility() && (root.checkRootMethod3()))
没有其他部分。所以,如果它是假的,那么程序就会向前推进。
答案 2 :(得分:0)
嗯,你总是会看到Text04,因为没有条件排除它。它所在的try catch块位于顶层。
如果您能提供代码的简短,自包含,可编译的示例,将会有所帮助。显然缺少其他可能相关的代码。例如,与最后一个catch块一起的try。此外,它可以帮助您评论代码块的开头和结尾,以便您可以告诉if else语句中包含的内容。