簡體   English   中英

在TextView中設置文本會引發空指針異常

[英]Setting text in TextView throws a null pointer exception

我剛剛開始進行android編程,嘗試在TextView中設置文本時遇到了此錯誤。 我已經研究了其他人的問題,但是我似乎已經在照顧他們的答案所指出的麻煩問題。

這是我的XML代碼:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.everythingmath.MainActivity$PlaceholderFragment" >

<GridLayout
    android:id="@+id/problemLayout"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:columnCount="5"
    android:rowCount="1" >

    <TextView 
        android:id="@+id/firstNumber"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="First Number"
        android:textSize="20sp" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text=" + "
        android:textSize="30sp" />

    <TextView 
        android:id="@+id/secondNumber"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Second Number"
        android:textSize="20sp" />

    <EditText
        android:id="@+id/numTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:inputType="number" 
        android:hint="Text Goes Here"
        android:textSize="20sp"/>

</GridLayout>
</RelativeLayout>

這是我相關的Java:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    if (savedInstanceState == null) {
        getSupportFragmentManager().beginTransaction()
                .add(R.id.container, new PlaceholderFragment()).commit();
    }

    int firstNumber = createRandomNumber(10);
    int secondNumber = createRandomNumber(10);
    TextView firstNumText = (TextView)findViewById(R.id.firstNumber);
    TextView secondNumText = (TextView)findViewById(R.id.secondNumber);
    firstNumText.setText(Integer.toString(firstNumber));
    secondNumText.setText(Integer.toString(secondNumber));
}

在這些行中,我嘗試設置引發錯誤的文本。 隨機數生成器也可以正常工作。

MainActivity類中本地化PlaceholderFragment類。

public View onCreateView方法更改為

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.fragment_main, container, false);

    int firstNumber = createRandomNumber(10);
    int secondNumber = createRandomNumber(10);
    TextView firstNumText = (TextView)findViewById(R.id.firstNumber);
    TextView secondNumText = (TextView)findViewById(R.id.secondNumber);
    firstNumText.setText(Integer.toString(firstNumber));
    secondNumText.setText(Integer.toString(secondNumber));

    return rootView;
}

您可能需要將createRandomNumber方法移動到PlaceholderFragment類。 如果您已將Fragment的名稱從fragment_main更改為其他名稱,請在此行中也將其更改

View rootView = inflater.inflate(R.layout.fragment_main, container, false);

您當前的代碼無效,因為

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    [..]
}

您只能通過在activity_main布局中聲明的ID視圖( findViewById )查找。 而且您的TextView視圖可能在fragment_main布局內聲明。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM