-1

我有这个代码

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

4

3 回答 3

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,elsetry

于 2013-09-25T16:42:23.760 回答
0

好吧,您总是会看到 Text04,因为没有条件排除它。它所在的 try catch 块位于顶层。

如果您可以提供一个简短的、自包含的、可编译的代码示例,将会有所帮助。显然还有其他可能相关的代码丢失了。例如,最后一个 catch 块的 try 。此外,它还可以帮助您注释代码块的开头和结尾,以便您了解 if else 语句中包含的内容。

于 2013-09-25T16:37:03.783 回答
0

我不知道这里需要多次尝试/捕获:

try {
    if (root.RootAvailibility() && (root.checkRootMethod3()))
    {

    try
    {

您可以在上面的 try/catch 块中再添加一个 catch(Exception e),这将起到相同的作用。其次,这个 if 没有其他部分(root.RootAvailibility() && (root.checkRootMethod3()))。所以,如果它是假的,程序将简单地向前移动。

于 2013-09-25T16:27:18.107 回答