TextView не отображается. Но все работает нормально, когда показано в logcat

Я пытаюсь отобразить вывод в текстовом виде. Но не получается отобразить. я не знаю y он не отображается в моем программном пакете 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();
     }


   }
 }

person nikhil    schedule 17.09.2011    source источник
comment
первый файл проверки существует в этом месте, если он не существует, выдается исключение и перед выполнением tv.setText(hii\n); утверждение...   -  person Hiren Dabhi    schedule 17.09.2011


Ответы (3)


установите LayoutParameter для Textview или просто возьмите макет в файле main.xml и добавьте textview в этот макет с помощью layout.addView(textview);

ОТРЕДАКТИРОВАНО

возьмите tv=new TextView(this); после вызова superClass следующим образом

    super.onCreate(savedInstanceState);
    tv=new TextView(this);
person Mohammed Azharuddin Shaikh    schedule 17.09.2011
comment
если вы не укажете параметры, предполагается, что match_parent, так что я думаю, что это не проблема. - person Yashwanth Kumar; 17.09.2011
comment
Возможно, вы правы, но можете ли вы предоставить этому дополнительные доказательства? Просто пропустил код View и TextView, а также их документ. Нигде не видел этого (при создании представления из кода). - person ; 17.09.2011
comment
developer.android.com/reference/android /app/ , проверьте это. - person Yashwanth Kumar; 17.09.2011
comment
Правильно, активность. Видел это раньше и забыл, просто возникло смутное ощущение, что я что-то упускаю. Ты прав. - person ; 17.09.2011

Вы должны измениться на это

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>
person Nafiz Bayındır    schedule 17.09.2011

вы можете поместить 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);
person Nikunj Patel    schedule 17.09.2011