无法让textview显示txt文件中的文本

2eafrhcq  于 2021-07-13  发布在  Java
关注(0)|答案(3)|浏览(413)

我是一个新手程序员,可能会超越自己,但我写的代码到目前为止似乎不工作,我一直试图找出它的几个小时
问题是,当我运行这个应用程序时,文本视图仍然显示为空。

public class MainActivity extends Activity
{
// GUI controls
TextView thoughtLogView;

/**Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    //Set MainActivity.xml as user interface layout
    setContentView(R.layout.main);
    // bind GUI elements with local controls

    thoughtLogView = (TextView) findViewById(R.id.logTextView);
}

private String GetPhoneAddress() {
    File file = new File(Environment.getExternalStorageDirectory() + "mythoughtlog.txt");
    if (!file.exists()){
        String line = "Need to add smth";
        return line;
    }
    String line = null;
    //Read text from file
    //StringBuilder text = new StringBuilder();
    try {
        BufferedReader br = new BufferedReader(new FileReader(file));
        line = br.readLine();
    }
    catch (IOException e) {
        //You'll need to add proper error handling here
    }

    final TextView tvphone = (TextView) findViewById(R.id.logTextView);
    String saved_phone = GetPhoneAddress();
    if (saved_phone.length()>0){
        tvphone.setText(saved_phone);
    }
    return line;
}

下面是布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="top|center"
android:orientation="vertical">

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/title"
    android:textStyle="normal"
    android:gravity="center"
    android:layout_marginTop="10dp"
    android:textSize="20sp"
    android:textColor="#FFFFFF"/>

<TextView
    android:layout_width="242dp"
    android:layout_height="227dp"
    android:id="@+id/logTextView"
    android:background="#ffffff" />

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="bottom|center">

    <Button
        android:layout_height="80dp"
        android:text="New Log"
        android:layout_width="match_parent"
        android:layout_weight="1.0"
        android:textSize="25sp"
        android:onClick="onNewLogButtonClick"/>

</LinearLayout>
axzmvihb

axzmvihb1#

你不擅长打电话 GetPhoneAddress() 这就是你不能设置文本的原因。所以这样修改你的代码。

public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    //Set MainActivity.xml as user interface layout
    setContentView(R.layout.main);
    // bind GUI elements with local controls

    thoughtLogView = (TextView) findViewById(R.id.logTextView);
    GetPhoneAddress();
}
oxcyiej7

oxcyiej72#

您将从方法中获得字符串结果 GetPhoneAddress() 只有在执行完整方法之后。
问题是,当我运行这个应用程序时,文本视图仍然显示为空。
那是因为你没有价值 saved_phone 你不打电话 GetPhoneAddress() 或者,我建议您将这些代码行移到方法之外 GetPhoneAddress() ,在将其设置为 TextView .

String saved_phone = GetPhoneAddress();
    if (saved_phone.length()>0){
        tvphone.setText(saved_phone);
    }
2vuwiymt

2vuwiymt3#

把这条线移到

onCreate(Bundle savedInstanceState){
GetPhoneAddress();
final TextView tvphone = (TextView) findViewById(R.id.logTextView);
String saved_phone = GetPhoneAddress();
if (saved_phone.length()>0){
    tvphone.setText(saved_phone);
}

}

问题是,在return语句之前,您当前正试图从方法本身getphoneaddress()获取返回字符串,因此它将不返回任何内容,您需要在调用getphoneaddress()之后设置文本,并且可以如上所述实现

相关问题