0

ボタンを動的に追加するための私のコードは次のとおりです。実行中にエラーがスローされます。何か案が?:)

DatabaseHandler db;
private RelativeLayout relativeLayout;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_settings);
    boolean userCounts = db.getUserExistance();
    if(userCounts == false){            
        Button button= new Button(this);
        button.setText("Add password");
        relativeLayout.addView(button);
    }
    else if(userCounts == true){            
        Button button2 = new Button(this);
        button2.setText("Change password");
        relativeLayout.addView(button2);            
    }

}

エラーログ:

09-17 11:44:34.658: D/AndroidRuntime(655): Shutting down VM 09-17 11:44:34.658: W/dalvikvm(655): threadid=1: thread exiting with uncaught exception (group=0x40a13300)
09-17 11:44:34.699: E/AndroidRuntime(655): FATAL EXCEPTION: main 
09-17 11:44:34.699: E/AndroidRuntime(655): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.projects.myworldsafe/com.projects.myworldsafe.Settings}: java.lang.NullPointerException 
09-17 11:44:34.699: E/AndroidRuntime(655): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
4

4 に答える 4

3

を初期化していませんrelativeLayoutrelativeLayoutプログラムで設定する場合は、次を試してください。

relativeLayout = new RelativeLayout(this);

それが最初にレイアウトファイルにある場合は、次のように見つける必要があります。

relativeLayout = (RelativeLayout) this.findViewById(R.id.your_layout_id);

と同じことDatabaseHandler db

于 2012-09-17T06:27:32.340 に答える
2

私はあなたが最初の使用の前に初期化するのを忘れたと思いますdbrelativeLayout

于 2012-09-17T06:28:27.283 に答える
0

私が考えた私によると、あなたはのレイアウトを与える必要がありますRelative layout

RelativeLayout = (RelativeLayout) this.findViewById(R.id.relativeID);
于 2012-09-17T06:31:12.183 に答える
0

これを試して、

DatabaseHandler db;
    private RelativeLayout relativeLayout;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_settings);
        boolean userCounts = db.getUserExistance();
        relativeLayout = (RelativeLayout) this.findViewById(R.id.myRelativeLayout);
        if(userCounts == false){            
            Button button= new Button(this);
            button.setText("Add password");
            relativeLayout.addView(button);
        }
        else if(userCounts == true){            
            Button button2 = new Button(this);
            button2.setText("Change password");
            relativeLayout.addView(button2);            
        }

    }
于 2012-09-17T06:46:08.020 に答える