簡體   English   中英

android-從.java文件控制XML文件中的NullPointerException

[英]android - NullPointerException in Controlling XML file from .java file

我已經在我的MultipleID活動的XML文件中創建了一個TextView塊,它看起來如下(相對布局):

    <TextView 
        android:id="@+id/multipleIDtext"
        android:text="@string/multipleIDtext_val"
        android:layout_width="wrap_context"
        android:layout_height="Wrap_context"
    />

在MultipleID.java文件的onCreate()方法內部,我具有以下內容:

    TextView textin = (TextView) findViewById(R.id.multipleIDtext);

然后,仍然在onCreate()方法中,我有以下幾行:

  textin.setText(message+ikinci);

其中“ message + ikinci”是不為null的字符串值。

這將返回NullPointerException,我無法解決。

提前致謝

如有需要,

活動代碼:

package com.example.yengeliogullariaileagaci;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.widget.ListView;
import android.widget.TextView;

@SuppressLint("NewApi")
public class MultipleID extends Activity {


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Intent intent = getIntent();

        Bundle b = intent.getExtras();
        String kendiIsmi= b.getString("isim");
        int isimkactane = b.getInt("sayi");
        int arrSayi = b.getInt("arrAdamSayisi");
        String message = kendiIsmi + " isminde aile agacinda " + String.valueOf(isimkactane) + " tane kisi bulunmaktadir \nLutfen hangisi oldugunuzu belirtiniz";
        StringBuilder s = new StringBuilder();
        TextView textin = (TextView) findViewById(R.id.multipleIDtext);


        for(int i=0;i<b.size()-3;i++)
        {
            s.append(b.getString("arrKendiIsmi"+i)+"   "+b.getString("arrAnne"+i)+"   "+b.getString("arrBaba"+i)+"\n");
        }

        String ikinci = "\n\n"+s.toString();
        //TextView text = new TextView(this);
        //text.setText(message+ikinci);
        //text.setTextSize(15);
        //setContentView(text);
        textin.setText(message+ikinci);

        getActionBar().setDisplayHomeAsUpEnabled(true);

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.multiple_id, menu);
        return true;
    }

}

完整的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=".MultipleID" >


    <TextView 
        android:id="@+id/multipleIDtext"
        android:text="@string/multipleIDtext_val"
        android:layout_width="wrap_context"
        android:layout_height="Wrap_context"
    />


</RelativeLayout>

記錄Cat錯誤日志:

09-08 14:15:12.546: E/AndroidRuntime(16292): FATAL EXCEPTION: main
09-08 14:15:12.546: E/AndroidRuntime(16292): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.yengeliogullariaileagaci/com.example.yengeliogullariaileagaci.MultipleID}: java.lang.NullPointerException
09-08 14:15:12.546: E/AndroidRuntime(16292):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2247)
09-08 14:15:12.546: E/AndroidRuntime(16292):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2297)
09-08 14:15:12.546: E/AndroidRuntime(16292):    at android.app.ActivityThread.access$700(ActivityThread.java:152)
09-08 14:15:12.546: E/AndroidRuntime(16292):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1282)
09-08 14:15:12.546: E/AndroidRuntime(16292):    at android.os.Handler.dispatchMessage(Handler.java:99)
09-08 14:15:12.546: E/AndroidRuntime(16292):    at android.os.Looper.loop(Looper.java:137)
09-08 14:15:12.546: E/AndroidRuntime(16292):    at android.app.ActivityThread.main(ActivityThread.java:5328)
09-08 14:15:12.546: E/AndroidRuntime(16292):    at java.lang.reflect.Method.invokeNative(Native Method)
09-08 14:15:12.546: E/AndroidRuntime(16292):    at java.lang.reflect.Method.invoke(Method.java:511)
09-08 14:15:12.546: E/AndroidRuntime(16292):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
09-08 14:15:12.546: E/AndroidRuntime(16292):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
09-08 14:15:12.546: E/AndroidRuntime(16292):    at dalvik.system.NativeStart.main(Native Method)
09-08 14:15:12.546: E/AndroidRuntime(16292): Caused by: java.lang.NullPointerException
09-08 14:15:12.546: E/AndroidRuntime(16292):    at com.example.yengeliogullariaileagaci.MultipleID.onCreate(MultipleID.java:41)
09-08 14:15:12.546: E/AndroidRuntime(16292):    at android.app.Activity.performCreate(Activity.java:5250)
09-08 14:15:12.546: E/AndroidRuntime(16292):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1097)
09-08 14:15:12.546: E/AndroidRuntime(16292):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
09-08 14:15:12.546: E/AndroidRuntime(16292):    ... 11 more

您缺少setContentView

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentview(R.layout.mylayout);

您需要先將布局的內容設置為活動,然后再初始化視圖。 findViewById()在當前放大的布局中查找具有提供的ID的View。

暫無
暫無

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

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