0

リマインダーを作成するアプリを作成しています。アプリは次のように機能します-

人がリマインダー テキストを入力して設定するたびに。

リマインダー テキストを表示する TextView、それを有効/無効にするための CheckBox、およびリマインダー アラームを設定するための構成ボタンを作成する必要があります。

これらすべてのオブジェクトを個別に作成する代わりに。リマインダー オブジェクトを作成することを考えました。このオブジェクトは、ユーザーが新しいリマインダーを設定するたびに作成されます。

これが私のコードです。リマインダー オブジェクトが機能しない理由がわかりません..アプリは単に強制終了します。

package com.aditya.patange.taskscheduler;

import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.text.TextUtils;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {
    EditText ReminderEditText;
    int MAX_REMINDERS = 20;
    int TEXT_SIZE = 20;
    TextView[] textviews; 
    CheckBox[] checkboxes;
    LinearLayout Llayout;
    LayoutParams params;
    SharedPreferences spref;
    SharedPreferences.Editor sprefEditor;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Llayout = (LinearLayout) findViewById(R.id.linearlayout);
        params = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    }

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



    public void InitializeObjects() {
        Llayout = (LinearLayout) findViewById(R.id.linearlayout);
        ReminderEditText = (EditText) findViewById(R.id.addReminderText); 
    }


    /*
     * Toast Message
     */
    public void ToastMessage(String Message) {
        Toast.makeText(getApplicationContext(), Message, Toast.LENGTH_SHORT).show();
    }


    public String getReminderText() {
        return ReminderEditText.getText().toString();
    }

    /*
     * onClick method for the set Reminder Button 
     */

    public void setReminder_onClick(View v) {
        /* Don't want a reminder with blank text..*/ 
        if(!TextUtils.isEmpty(getReminderText())) {
            ReminderWidget widget = new ReminderWidget(this);
            widget.setText(getReminderText());
            widget.setTextSize(20);
            widget.setLayoutParams(params);
            widget.displayReminderWidget(Llayout);
        }
    }

}

ReminderWidget.java (このコードの何が問題なのか誰か教えてくれませんか?)

package com.aditya.patange.taskscheduler;

import android.content.Context;
import android.content.SharedPreferences;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.LinearLayout;
import android.widget.TextView;



/*
 * The Reminder Widget should consist of - 
 * 
 * [1] A TextView displaying the Reminder
 * [2] A CheckBox with the Enable/Disable Toggle.
 * [3] A configure Button  
 * (This should open a context Menu by which you can configure the Alarm) 
 * [4] ..lots to come
 * 
 */

public class ReminderWidget {

    TextView textview;
    CheckBox checkbox;
    Button configButton;
    SharedPreferences preference;
    String ReminderText;
    int ReminderTextSize;

    public ReminderWidget(Context context) {
        textview = new TextView(context);
        checkbox = new CheckBox(context);
        configButton = new Button(context); 
        configButton.setText("Configure");
    }

    public void displayReminderWidget(LinearLayout layout) {
        layout.addView(textview);
        layout.addView(checkbox);
        layout.addView(configButton);
    }

    public void setText(String text) {
        ReminderText=text;
        textview.setText(ReminderText);
    }

    public String getText(String text) {
        return ReminderText;
    }

    public void setTextSize(int size) {
        ReminderTextSize = size;
        textview.setTextSize(ReminderTextSize);
    }

    public int getTextSize() {
        return ReminderTextSize;
    }

    public void setLayoutParams(LayoutParams params) {
        textview.setLayoutParams(params);
        checkbox.setLayoutParams(params);
        configButton.setLayoutParams(params);
    }

}

ありがとう!

4

1 に答える 1

1

logcat がなければ、これは暗闇でのショットですが、

public String getReminderText() {
    return ReminderEditText.getText().toString();
}

ReminderEditTextここで作成されます

public void InitializeObjects() {
    Llayout = (LinearLayout) findViewById(R.id.linearlayout);
    ReminderEditText = (EditText) findViewById(R.id.addReminderText); 
}

しかし、あなたが呼び出す場所がどこにも表示されないため、まだインスタンス化されていないため、null オブジェクトを呼び出していますInitializeObjectsgetText()

于 2013-04-11T10:40:32.900 に答える