0

Android アプリを開発しようとしていますが、その一部に問題があります。クリックすると別のアクティビティに移動するボタンを使用してアクティビティを作成しようとしています。ここで名前を書くことができます。この名前はボタンを使用してアクティビティに戻され、1 つのボタンの可視性を設定します。非表示から表示に設定され、返されたテキスト。私が抱えている問題は、文字列を導入することになっているクラスから [ok] ボタンをクリックしようとするたびに、NullPointer Exception が発生することです。コードをコピーして貼り付けます。

ボタンを使用したアクティビティ (Notebook.java):

package eu.lafarga.treballderecerca;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import eu.lafarga.treballderecerca.Notebook_NewSubject;

public class Notebook extends Activity implements View.OnClickListener {

    public Button NewSubjectButton, Button1L, Button2L, Button3L, Button4L,
            Button5L, Button1R, Button2R, Button3R, Button4R, Button5R;
    private int counter;

    // onCreate
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.notebook);
        initializeNotebook();


    }

    public void initializeNotebook() {
        NewSubjectButton = (Button) findViewById(R.id.bNotebookNew);
        Button1L = (Button) findViewById(R.id.bHiddenL1);
        Button2L = (Button) findViewById(R.id.bHiddenL2);
        Button3L = (Button) findViewById(R.id.bHiddenL3);
        Button4L = (Button) findViewById(R.id.bHiddenL4);
        Button5L = (Button) findViewById(R.id.bHiddenL5);
        Button1R = (Button) findViewById(R.id.bHiddenR1);
        Button2R = (Button) findViewById(R.id.bHiddenR2);
        Button3R = (Button) findViewById(R.id.bHiddenR3);
        Button4R = (Button) findViewById(R.id.bHiddenR4);
        Button5R = (Button) findViewById(R.id.bHiddenR5);

        NewSubjectButton.setOnClickListener(this);
        Button1L.setOnClickListener(this);
        Button2L.setOnClickListener(this);
        Button3L.setOnClickListener(this);
        Button4L.setOnClickListener(this);
        Button5L.setOnClickListener(this);
        Button1R.setOnClickListener(this);
        Button2R.setOnClickListener(this);
        Button3R.setOnClickListener(this);
        Button4R.setOnClickListener(this);
        Button5R.setOnClickListener(this);
    }


    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        Bundle getNewSubjectBundle = getIntent().getExtras();
        int Number = getNewSubjectBundle.getInt("int");
        String Title = "0";

        if(resultCode == RESULT_OK && Number == 1){

            Title = getNewSubjectBundle.getString("title1L");
            Button1L.setText(Title);
            Button1L.setVisibility(View.VISIBLE);
            counter++;

        }else if(resultCode == RESULT_OK && Number == 2){

            Title = getNewSubjectBundle.getString("title2L");
            Button2L.setText(Title);
            Button2L.setVisibility(View.VISIBLE);
            counter++;

        }else if(resultCode == RESULT_OK && Number == 3){
            Title = getNewSubjectBundle.getString("title3L");
            Button3L.setText(Title);
            Button3L.setVisibility(View.VISIBLE);
            counter++;

        }else if(resultCode == RESULT_OK && Number == 4){
            Title = getNewSubjectBundle.getString("title4L");
            Button4L.setText(Title);
            Button4L.setVisibility(View.VISIBLE);
            counter++;

        }else if(resultCode == RESULT_OK && Number == 5){
            Title = getNewSubjectBundle.getString("title5L");
            Button5L.setText(Title);
            Button5L.setVisibility(View.VISIBLE);
            counter++;

        }else if(resultCode == RESULT_OK && Number == 6){
            Title = getNewSubjectBundle.getString("title1R");
            Button1R.setText(Title);
            Button1R.setVisibility(View.VISIBLE);
            counter++;

        }else if(resultCode == RESULT_OK && Number == 7){
            Title = getNewSubjectBundle.getString("title2R");
            Button2R.setText(Title);
            Button2R.setVisibility(View.VISIBLE);
            counter++;

        }else if(resultCode == RESULT_OK && Number == 8){
            Title = getNewSubjectBundle.getString("title3R");
            Button3R.setText(Title);
            Button3R.setVisibility(View.VISIBLE);
            counter++;

        }else if(resultCode == RESULT_OK && Number == 9){
            Title = getNewSubjectBundle.getString("title4R");
            Button4R.setText(Title);
            Button4R.setVisibility(View.VISIBLE);
            counter++;

        }else if(resultCode == RESULT_OK && Number == 10){
            Title = getNewSubjectBundle.getString("title5R");
            Button5R.setText(Title);
            Button5R.setVisibility(View.VISIBLE);
            counter++;

        }else if(counter > 10){
            NewSubjectButton.setVisibility(View.GONE);
        }
    }

テキスト (Notebook_NewSubject.java) を導入するアクティビティ:

package eu.lafarga.treballderecerca;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class Notebook_NewSubject extends Activity implements View.OnClickListener {

    private Button OKButton;
    Bundle NewSubjectBundle;
    private EditText NewTextInput;
    Intent mIntent = new Intent();

    int[] integer = {0,0,0,0,0,0,0,0,0,0};

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


    }


        public void initializeNotebookNewSubject() {

            NewTextInput = (EditText) findViewById(R.id.etNewNotebookButtonCreateSubjectButton);
            OKButton = (Button) findViewById(R.id.bOkButton);

            OKButton.setOnClickListener(this);

        }

        @Override
        public void onClick(View v) {



            switch (v.getId()){

            case R.id.bOkButton:


            if(integer[0] == 0 && NewTextInput.getText().toString() != null){

                NewSubjectBundle.putString("title1L", NewTextInput.getText().toString());
                NewSubjectBundle.putInt("int", 1);
                 mIntent.putExtras(NewSubjectBundle);
                 setResult(RESULT_OK, mIntent);
                 integer[0] = 1;
                 return;


            }else if(integer[1] == 0 && NewTextInput.getText().toString() != null){

                NewSubjectBundle.putString("title2L", NewTextInput.getText().toString());
                NewSubjectBundle.putInt("int", 2);
                 mIntent.putExtras(NewSubjectBundle);
                 setResult(RESULT_OK, mIntent);
                 integer[1] = 1;
                 return;

            }else if(integer[2] == 0 && NewTextInput.getText().toString() != null){

                NewSubjectBundle.putString("title3L", NewTextInput.getText().toString());
                NewSubjectBundle.putInt("int", 3);
                 mIntent.putExtras(NewSubjectBundle);
                 setResult(RESULT_OK, mIntent);
                 integer[2] = 1;
                 return;

            }else if(integer[3] == 0 && NewTextInput.getText().toString() != null){

                NewSubjectBundle.putString("title4L", NewTextInput.getText().toString());
                NewSubjectBundle.putInt("int", 4);
                 mIntent.putExtras(NewSubjectBundle);
                 setResult(RESULT_OK, mIntent);
                 integer[3] = 1;
                 return;

            }else if(integer[4] == 0 && NewTextInput.getText().toString() != null){

                NewSubjectBundle.putString("title5L", NewTextInput.getText().toString());
                NewSubjectBundle.putInt("int", 5);
                 mIntent.putExtras(NewSubjectBundle);
                 setResult(RESULT_OK, mIntent);
                 integer[4] = 1;
                 return;

            }else if(integer[5] == 0 && NewTextInput.getText().toString() != null){

                NewSubjectBundle.putString("title1R", NewTextInput.getText().toString());
                NewSubjectBundle.putInt("int", 6);
                 mIntent.putExtras(NewSubjectBundle);
                 setResult(RESULT_OK, mIntent);
                 integer[5] = 1;
                 return;

            }else if(integer[6] == 0 && NewTextInput.getText().toString() != null){

                NewSubjectBundle.putString("title2R", NewTextInput.getText().toString());
                NewSubjectBundle.putInt("int", 7);
                 mIntent.putExtras(NewSubjectBundle);
                 setResult(RESULT_OK, mIntent);
                 integer[6] = 1;
                 return;

            }else if(integer[7] == 0 && NewTextInput.getText().toString() != null){

                NewSubjectBundle.putString("title3R", NewTextInput.getText().toString());
                NewSubjectBundle.putInt("int", 8);
                 mIntent.putExtras(NewSubjectBundle);
                 setResult(RESULT_OK, mIntent);
                 integer[7] = 1;
                 return;

            }else if(integer[8] == 0 && NewTextInput.getText().toString() != null){

                NewSubjectBundle.putString("title4R", NewTextInput.getText().toString());
                NewSubjectBundle.putInt("int", 9);
                 mIntent.putExtras(NewSubjectBundle);
                 setResult(RESULT_OK, mIntent);
                 integer[8] = 1;
                 return;

            }else if(integer[9] == 0 && NewTextInput.getText().toString() != null){

                NewSubjectBundle.putString("title5R", NewTextInput.getText().toString());
                NewSubjectBundle.putInt("int", 10);
                 mIntent.putExtras(NewSubjectBundle);
                 setResult(RESULT_OK, mIntent);
                 integer[9] = 1;
                 return;

            }


            break;
        }
            finish();
    }

}

エラー:

10-27 11:25:31.536: D/AndroidRuntime(837): Shutting down VM
10-27 11:25:31.536: W/dalvikvm(837): threadid=1: thread exiting with uncaught exception (group=0x41465700)
10-27 11:25:31.787: E/AndroidRuntime(837): FATAL EXCEPTION: main
10-27 11:25:31.787: E/AndroidRuntime(837): java.lang.NullPointerException
10-27 11:25:31.787: E/AndroidRuntime(837):  at eu.lafarga.treballderecerca.Notebook_NewSubject.onClick(Notebook_NewSubject.java:47)
10-27 11:25:31.787: E/AndroidRuntime(837):  at android.view.View.performClick(View.java:4240)
10-27 11:25:31.787: E/AndroidRuntime(837):  at android.view.View$PerformClick.run(View.java:17721)
10-27 11:25:31.787: E/AndroidRuntime(837):  at android.os.Handler.handleCallback(Handler.java:730)
10-27 11:25:31.787: E/AndroidRuntime(837):  at android.os.Handler.dispatchMessage(Handler.java:92)
10-27 11:25:31.787: E/AndroidRuntime(837):  at android.os.Looper.loop(Looper.java:137)
10-27 11:25:31.787: E/AndroidRuntime(837):  at android.app.ActivityThread.main(ActivityThread.java:5103)
10-27 11:25:31.787: E/AndroidRuntime(837):  at java.lang.reflect.Method.invokeNative(Native Method)
10-27 11:25:31.787: E/AndroidRuntime(837):  at java.lang.reflect.Method.invoke(Method.java:525)
10-27 11:25:31.787: E/AndroidRuntime(837):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
10-27 11:25:31.787: E/AndroidRuntime(837):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
10-27 11:25:31.787: E/AndroidRuntime(837):  at dalvik.system.NativeStart.main(Native Method)
4

3 に答える 3

2

アクティビティで、オブジェクトNotebook_NewSubjectを初期化するのを忘れました。Bundle

Bundle NewSubjectBundle; <- declared but not initialized

そのため、NewSubjectBundle.putString(...)それを行うとNullPointerException

NullPointerException簡単に解決できることが多いです。

at eu.lafarga.treballderecerca.Notebook_NewSubject.onClick(Notebook_NewSubject.java:47)

基本的に、何かが初期化されていないことを示しています。したがって、この行 (つまり、 の 47 行目Notebook_NewSubject.java) を読んで、 が何であるかを確認する必要がありますnull

于 2013-10-27T15:37:36.907 に答える
1

Notebook_NewSubjectクラスを変更してみる

NewSubjectBundle.putString("title1L", NewTextInput.getText().toString());
NewSubjectBundle.putInt("int", 1);
mIntent.putExtras(NewSubjectBundle);

Intent mIntent = new Intent();
mIntent.putString("title1L", NewTextInput.getText().toString());
mIntent.putInt("int", 1);
setResult(RESULT_OK, mIntent);

そしてNotebookクラスで

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        String title = data.getStringExtra("title1L");
        int title = data.getIntExtra("int");
        //////

編集:-

バンドルを使用している場合は、変更します

Bundle getNewSubjectBundle = getIntent().getExtras();

Bundle getNewSubjectBundle = data.getExtras();

ノートブッククラスで。

于 2013-10-27T15:48:11.807 に答える
0

私は最終的に、XML ID で Java を正しく参照していないことに気付きました。したがって、編集テキストは次のようになります。

 NewTextInput = (EditText) findViewById(R.id.etSetSubjectName); 
于 2013-10-29T13:33:37.723 に答える