【问题标题】:TextView doesnot display. But every thing works fine when shown in logcatTextView 不显示。但是在 logcat 中显示时一切正常
【发布时间】:2011-09-17 11:43:15
【问题描述】:

我正在尝试在文本视图中显示输出。但无法显示。我不知道它没有显示在我的程序中 包 com.iiitb.nikhil.sindhu;

 import java.io.BufferedReader; 
 import java.io.DataInput;
 import java.io.DataInputStream;
 import java.io.DataOutputStream;
 import java.io.IOException;
 import java.io.InputStreamReader;

 import android.app.Activity;
 import android.os.Bundle;
 import android.util.Log;
 import android.widget.TextView;
  import java.util.*;
 import android.util.*;
   public class LinuxShellCommandAndroidProgramActivity extends Activity {
/** Called when the activity is first created. */

TextView tv;
public void onCreate(Bundle savedInstanceState) {
     tv=new TextView(this);
    super.onCreate(savedInstanceState);

    try {
        Process process = Runtime.getRuntime().exec("/system/bin/su");
        DataOutputStream os = new DataOutputStream(process.getOutputStream());
        DataInputStream is=new DataInputStream(process.getInputStream());

        //os = new DataOutputStream(process.getOutputStream());
        os.writeBytes("/system/bin/chmod 600 /data/data/newfile\n");
        os.writeBytes("cd /data/data/dalvik-cache/\n");
        os.writeBytes("/system/bin/ls -l  /data/dalvik-cache\n");
        String output=new String();

        tv.setText("hii \n");
        //setContentView(tv);
        String temp = new String();
           while((output=is.readLine())!=null)
           {
              Log.i("Check ",output);
              tv.append(output);
           }

            setContentView(tv);
            os.flush();
       } catch (IOException e) {
            // TODO Auto-generated catch block
             e.printStackTrace();
     }


   }
 }

【问题讨论】:

  • 第一个检查文件是否存在于该位置,如果不存在则抛出异常并在执行 tv.setText("hii \n");声明...

标签: android android-layout android-emulator android-widget android-manifest


【解决方案1】:

在 Textview 上设置 LayoutParameter,或者只在 main.xml 文件中设置一个布局,然后通过 layout.addView(textview); 在该布局中添加 textview

已编辑

调用超类后取tv=new TextView(this); 像这样

    super.onCreate(savedInstanceState);
    tv=new TextView(this);

【讨论】:

  • 如果您不提及参数,它将假定为 match_parent,所以我认为这不是问题。
  • 你可能是对的,但你能提供额外的证据吗?刚刚跳过了View 和TextView 代码,以及他们的文档。在任何地方都没有看到这一点(从代码创建视图时)。
  • 对,活动。以前看过这个然后忘记了,只是有一种模糊的感觉我错过了一些东西。你是对的。
【解决方案2】:

你必须改变那个

public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
     setContentView(R.layout.main);

     tv=(TextView) findViewById(R.id.tv);  

....

然后打开 res/layout/main.xml 将此代码插入到 linerlayout 标签之间,

<TextView android:text="Text box" android:layout_width="60dp" android:id="@+id/tv" android:layout_height="wrap_content"></TextView>

【讨论】:

    【解决方案3】:

    你可以通过这个方法放置textview

    ScrollView sv = new ScrollView(this);
        LinearLayout ll = new LinearLayout(this);
        ll.setOrientation(LinearLayout.VERTICAL);
        sv.addView(ll);
    
        TextView tv = new TextView(this);
    
        tv.setText("Dynamic layouts ftw!");
    
        ll.addView(tv);
        this.setContentView(sv);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-25
      • 1970-01-01
      • 2023-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多