1

初めての Android アプリを作成しようとしていますが、問題が発生しています。ユーザーから提供された数値の因数を見つける簡単な Java プログラムを作成しました。これを Java に移植したいと考えています。インターフェイス用の XML ファイルがありますが、最初の Java クラスを追加するまでは正常に動作しているように見えました。今では実行されず、log.cat はヌル ポインター例外があることを示しています。これまでのところ、スタブしかありませんが、ここまでの作業で問題なく動作するはずです。私は log.cat テキストを含めていますが、これは新しすぎてあまり意味がありません。

複数の問題がある可能性があります。Java ファイルを追加した後、すぐに実行時エラーが発生し始めましたが、NULL ポインター例外ではないと思います。すでに問題を引き起こしているものを修正するために変更を加えたときに始まったと思います。

どんな助けでも大歓迎です。

Java ファイルは次のとおりです。

import android.app.Activity;  <br>
import android.os.Bundle;  <br>
import android.widget.Button;   <br>
import android.widget.EditText;  <br>
import android.widget.TextView;  <br>

public class AndroidFactoringActivity extends Activity {

    // Instance Variables
    EditText userNumber;
    Button factorButton;
    TextView resultsField;
    int factorResults;

    /** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    factorButton = (Button) findViewById(R.id.factorButton);
    userNumber = (EditText) findViewById(R.id.userNumber);
    factorResults = 1;
    resultsField.setText(String.valueOf(factorResults));
}   
}

main.xml は次のとおりです。

<?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:orientation="vertical" >

    <TextView
        android:id="@+id/askField"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/ask"
        android:textSize="24dp" />

    <EditText
        android:id="@+id/userNumber"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:inputType="number" >

        <requestFocus />
    </EditText>

    <Button
        android:id="@+id/factorButton"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/click" />

    <TextView
        android:id="@+id/resultsField"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/tell"
        android:textSize="24dp" />
</LinearLayout>

log.cat の結果は次のとおりです。

 03-31 23:58:53.579: D/AndroidRuntime(2804): Shutting down VM

    03-31 23:58:53.589: W/dalvikvm(2804): threadid=3: thread exiting with uncaught exception (group=0x4001b188)

    03-31 23:58:53.589: E/AndroidRuntime(2804): Uncaught handler: thread main exiting due to uncaught exception

    03-31 23:58:53.650: E/AndroidRuntime(2804): java.lang.RuntimeException: Unable to start activity ComponentInfo{net.dave_b.factoring/net.dave_b.factoring.AndroidFactoringActivity}: java.lang.NullPointerException

    03-31 23:58:53.650: E/AndroidRuntime(2804):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496)

    03-31 23:58:53.650: E/AndroidRuntime(2804):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)

    03-31 23:58:53.650: E/AndroidRuntime(2804):     at android.app.ActivityThread.access$2200(ActivityThread.java:119)

    03-31 23:58:53.650: E/AndroidRuntime(2804):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)

    03-31 23:58:53.650: E/AndroidRuntime(2804):     at android.os.Handler.dispatchMessage(Handler.java:99)

    03-31 23:58:53.650: E/AndroidRuntime(2804):     at android.os.Looper.loop(Looper.java:123)

    03-31 23:58:53.650: E/AndroidRuntime(2804):     at android.app.ActivityThread.main(ActivityThread.java:4363)

    03-31 23:58:53.650: E/AndroidRuntime(2804):     at java.lang.reflect.Method.invokeNative(Native Method)

    03-31 23:58:53.650: E/AndroidRuntime(2804):     at java.lang.reflect.Method.invoke(Method.java:521)

    03-31 23:58:53.650: E/AndroidRuntime(2804):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)

    03-31 23:58:53.650: E/AndroidRuntime(2804):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)

    03-31 23:58:53.650: E/AndroidRuntime(2804):     at dalvik.system.NativeStart.main(Native Method)

    03-31 23:58:53.650: E/AndroidRuntime(2804): Caused by: java.lang.NullPointerException

    03-31 23:58:53.650: E/AndroidRuntime(2804):     at net.dave_b.factoring.AndroidFactoringActivity.onCreate(AndroidFactoringActivity.java:26)

    03-31 23:58:53.650: E/AndroidRuntime(2804):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)

    03-31 23:58:53.650: E/AndroidRuntime(2804):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)

    03-31 23:58:53.650: E/AndroidRuntime(2804):     ... 11 more

    03-31 23:58:53.679: I/dalvikvm(2804): threadid=7: reacting to signal 3

    03-31 23:58:53.679: E/dalvikvm(2804): Unable to open stack trace file '/data/anr/traces.txt': Permission denied

    03-31 23:59:57.629: I/Process(2804): Sending signal. PID: 2804 SIG: 9

    04-01 00:07:36.129: D/AndroidRuntime(3040): Shutting down VM

    04-01 00:07:36.129: W/dalvikvm(3040): threadid=3: thread exiting with uncaught exception (group=0x4001b188)

    04-01 00:07:36.139: E/AndroidRuntime(3040): Uncaught handler: thread main exiting due to uncaught exception

    04-01 00:07:36.159: E/AndroidRuntime(3040): java.lang.RuntimeException: Unable to start activity ComponentInfo{net.dave_b.factoring/net.dave_b.factoring.AndroidFactoringActivity}: java.lang.NullPointerException

    04-01 00:07:36.159: E/AndroidRuntime(3040):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496)

    04-01 00:07:36.159: E/AndroidRuntime(3040):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)

    04-01 00:07:36.159: E/AndroidRuntime(3040):     at android.app.ActivityThread.access$2200(ActivityThread.java:119)

    04-01 00:07:36.159: E/AndroidRuntime(3040):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)

    04-01 00:07:36.159: E/AndroidRuntime(3040):     at android.os.Handler.dispatchMessage(Handler.java:99)

    04-01 00:07:36.159: E/AndroidRuntime(3040):     at android.os.Looper.loop(Looper.java:123)

    04-01 00:07:36.159: E/AndroidRuntime(3040):     at android.app.ActivityThread.main(ActivityThread.java:4363)

    04-01 00:07:36.159: E/AndroidRuntime(3040):     at java.lang.reflect.Method.invokeNative(Native Method)

    04-01 00:07:36.159: E/AndroidRuntime(3040):     at java.lang.reflect.Method.invoke(Method.java:521)

    04-01 00:07:36.159: E/AndroidRuntime(3040):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)

    04-01 00:07:36.159: E/AndroidRuntime(3040):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)

    04-01 00:07:36.159: E/AndroidRuntime(3040):     at dalvik.system.NativeStart.main(Native Method)

    04-01 00:07:36.159: E/AndroidRuntime(3040): Caused by: java.lang.NullPointerException

    04-01 00:07:36.159: E/AndroidRuntime(3040):     at net.dave_b.factoring.AndroidFactoringActivity.onCreate(AndroidFactoringActivity.java:26)

    04-01 00:07:36.159: E/AndroidRuntime(3040):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)

    04-01 00:07:36.159: E/AndroidRuntime(3040):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)

    04-01 00:07:36.159: E/AndroidRuntime(3040):     ... 11 more

    04-01 00:07:36.199: I/dalvikvm(3040): threadid=7: reacting to signal 3

    04-01 00:07:36.199: E/dalvikvm(3040): Unable to open stack trace file '/data/anr/traces.txt': Permission denied

    04-01 00:07:40.329: I/Process(3040): Sending signal. PID: 3040 SIG: 9
4

3 に答える 3

2
resultsField.setText(String.valueOf(factorResults));

resultsFieldnullあり、null に値を設定しようとしています。

resultsField= (TextView ) findViewById(R.id.userNumber);

値を設定する前に textview インスタンスを取得します。それ以外の場合resultsFieldは、参照に対するnullすべての操作が になります。nullNullPointerException

于 2012-10-28T04:29:32.363 に答える
0

次のように userNumer と resultsFiled を初期化する必要があります

userNumber = (EditText) findViewById(R.id.userNumber); resultsField= (TextView ) findViewById(R.id.resultsField);

于 2014-06-11T06:10:36.377 に答える
0

変数 resultsField を初期化しなかったため (宣言しただけです)、null ポインターを取得しました。

あなたが使用したように

userNumber = (EditText) findViewById(R.id.userNumber);

参照 resultsField も初期化する必要があります。これは、

resultsField= (TextView ) findViewById(R.id.resultsField);

onCreate()声明の後にsetContentView()

于 2012-10-28T04:33:49.430 に答える