0

我正在尝试在加载时将数据加载到文本视图中。我的应用程序使用片段并具有三个选项卡。我能够将数据加载到前两个选项卡中,但是当我尝试将数据加载到第三个选项卡时出现空指针异常。这是代码:

public void readAndLoadDataFromFile()
{
    String[] fieldNamesInFile = new String[50];
    double[] valuesInFile = new double[50];
    // read all the data from file
    readAllDataFromFile(fieldNamesInFile, valuesInFile);

    // Tab 1
    double value1 = valuesInFile[Arrays.asList(fieldNamesInFile).indexOf("Field1")];
    // copy the data into the fields
    ((EditText) findViewById(R.id.editText1)).setText(String.valueOf(value1)); // OK

    // Tab 2
    double value2 = valuesInFile[Arrays.asList(fieldNamesInFile).indexOf("Field2")];
    // copy the data into the fields
    ((EditText) findViewById(R.id.editText2)).setText(String.valueOf(value2)); // OK

    // Tab 3
    double value3 = valuesInFile[Arrays.asList(fieldNamesInFile).indexOf("Field3")];
    // copy the data into the fields
    ((EditText) findViewById(R.id.editText3)).setText("123"); // null pointer exception


}

选项卡 3 的布局 XML 文件如下(前两个选项卡类似):

<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/myScrollView"
android:layout_width="fill_parent" 
android:layout_height="wrap_content">

<TableLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >


<TableRow
        android:id="@+id/tableRow3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp" >

        <TextView
            android:id="@+id/textView3"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:text="Text 3:"
            android:clickable="true"
            android:gravity="right"
            android:layout_weight="2"
            android:layout_marginRight="2dp"
            android:textAppearance="?android:attr/textAppearanceSmall" />

        <EditText
            android:id="@+id/editText3"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:gravity="right"
            android:layout_weight="1"
            android:layout_marginLeft="2dp"
            android:ems="10"
            android:text="25"
            android:inputType="numberDecimal"
            android:textAppearance="?android:attr/textAppearanceSmall" />

</TableRow>
</TableLayout>

</ScrollView>

我错过了什么?

4

2 回答 2

0

有时项目只需要重建 R 文件。您可以尝试 Eclipse 中的“Clean”选项(选择 Project -> Clean 并选择您的项目)。您还可以检查 R 文件以查看该条目是否存在。R 文件位于gen目录中。如果不是,您可以尝试删除 R 文件并在再次编译时让它重建,然后查看它是否出现。

要检查的另一件事是确保正在访问的 R 文件不是 Android R 文件。检查您的导入,或通过将您的行更改为设置为您的包名称((EditText) findViewById(com.yourproject.app.R.id.editText3)).setText("123");的部分来强制它。com.yourproject.app这样做将确保您获得正确的 R 文件。

于 2013-03-15T00:53:35.623 回答
0

通过强制导航转到特定选项卡并加载视图来修复(破解)问题。

ActionBar actionBar = getActionBar();
actionBar.setSelectedNavigationItem(2); // go to Tab 3

double value3 = valuesInFile[Arrays.asList(fieldNamesInFile).indexOf("Field3")];
// copy the data into the fields
((EditText) findViewById(R.id.editText3)).setText("123"); // no more null pointer exception

不为自己感到骄傲,但至少它现在解决了问题。

于 2013-03-15T20:53:10.270 回答