0

私は非常に欲求不満の初心者です!どこから始めればいいのか本当にわかりません。ダミーブックのアプリに基づいたアプリがあります。動作しました。次に、時間と日付にWIMMOneダイアログを使用するように変換しようとしました。何度も失敗した後、サンプルの 1 つを読み込んで動作させました。次に、その中のコードを分離して、サンプルに貼り付けました。過去のエラーを取得できません。(Eclipseが常に独自のものを追加することは役に立ちません。ソースをロードすると、インポートを含むすべてのステートメントがエラーとしてマークされることがあります.R.idを取得することもあります---エラーで、コメントをエラーとしてマークしました。

ただし、実際のエラーがいくつかあると思うほど、十分な回数クリーニングしてリロードしました。

私のコードとサンプル コードにはいくつかの基本的な違いがあります。サンプルは 1 つの大きなアクティビティ Java ファイルであり、私のコードはフラグメントです。私は時間ダイアログ用に別のJavaファイルを持っていました。サンプルは 1 つのファイルに含まれていたので、そのようにコーディングしました。私のものには2つのメニューがあり、ユーザーが「詳細」メニューに移動するリストです。サンプルは全て1画面です。

WIMM から 2 つの JAR ファイルがありました。両方ともライブラリに持っています。

スペースを節約するために、3 つのエラーが発生する最初の部分を含めましたが、必要に応じて喜んですべて提供します。

まずはサンプルです。それは動作し、私のコメント付きのコードでも、コンパイル エラーはありません: ありがとう、クラーク

    package com.test.medication;


    /**************************
     * Java Imports
     **************************/
    import java.util.Calendar;

    /******************************
     * android imports
     ******************************/
    import android.app.AlarmManager;
    import android.app.Dialog;
    import android.app.PendingIntent;
    import android.content.Context;
    import android.content.Intent;
    import android.net.Uri;
    import android.os.Bundle;
    import android.text.format.Time;
    import android.util.Log;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;

    /******************************
     * Wimm imports
     ******************************/
    import com.wimm.framework.app.LauncherActivity;
    import com.wimm.framework.app.TextInputDialog;
    import com.wimm.framework.app.TimePickerDialog;
    import com.wimm.framework.app.TimePickerDialog.OnTimeSelectedListener;

    public class MedicationsActivity extends LauncherActivity 
    {


        /****************************
         * private globals
         ****************************/
        private TextInputDialog textDialog;
        private TimePickerDialog timeDialog;
        private long msToCount = 0;
        private static String textInput = "please enter pills";
        private EditText timeDisplay;
        private EditText pillsDisplay;
        private long newMs = 0;
        private int Hours;
        private int Minutes;
        private static int hoursToCount = 0;
        private static int minutesToCount = 0;
        private Calendar c ;
        private int mIndex = 0;
        private boolean textEntered = false;

    // get an store the simple name of this class into an String
    private static final String TAG = MedicationsActivity.class.getSimpleName();


     /***********************
     *  define constants
     **********************/
    // define id for both the time dialog, and the enter pills dialog
    static final int TIME_DIALOG_ID = 0;
    static final int PILLS_DIALOG_ID = 1;
    // the actions for the intent definitions posted 
    public static final String ACTION_POST_NOTIFICATION     = "com.test.medication.action.POST";
    public static final String ACTION_UPDATE_NOTIFICATION   = "com.test.medication.action.UPDATE";
    public static final String ACTION_CANCEL_NOTIFICATION   = "com.test.medication.action.CANCEL";

    //delay between views
    private static final int viewDelay      = 5000;  // ms

    @Override
    public void onCreate(Bundle savedInstanceState) 
    {

        //-----------------------------------------------
        // initialize time entry listener
            // pass current state
            super.onCreate(savedInstanceState);

            // open up main layout resource and upload into wimm 
            setContentView(R.layout.main);

            Log.d("MedsMC","S onCrt-1");

            // Subscribe listeners to the buttons and text fields
            Button okButton = (Button)findViewById(R.id.ok);
            Button pillsButton = (Button)findViewById(R.id.enterPills);
            pillsDisplay = (EditText)findViewById(R.id.entryMeds);
            timeDisplay = (EditText)findViewById(R.id.entryTime); 
            Log.d("MedsMC","S onCrt-2L" + timeDisplay);

            // set up the time picker dialog with initial time
            //and subscribe a listener upon the press of ok n the time dialog
            TimePickerDialog myTimerHandler = new TimePickerDialog(this);
            myTimerHandler.setTime(6, 0);
            myTimerHandler.setTimeSelectedListener(timeSetListener);
            Log.d("MedsMC","S onCrt-3myTH" + timeDisplay);

これは私の最新の 3 つのエラーです。「TimePickerDialog」はいくつかの場所で使用され、常にエラーが発生します。

package com.dummies.android.taskreminder;
import java.text.SimpleDateFormat; 
import java.util.Calendar;  
import java.util.Date;

import android.app.DatePickerDialog.OnDateSetListener;
//import android.app.TimePickerDialog.OnTimeSetListener;
import android.content.ContentUris;
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;   //
import android.os.Bundle;  //
import android.os.Handler; 
import android.support.v4.app.DialogFragment;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.app.LoaderManager.LoaderCallbacks;
import android.support.v4.content.CursorLoader;
import android.support.v4.content.Loader;
import android.view.LayoutInflater;
import android.view.View;  //
//import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button; //
import android.widget.DatePicker;
import android.widget.EditText;  //
//import android.widget.TimePicker;
import android.widget.Toast;
import android.util.Log;  //
import android.text.format.Time;
import android.app.Dialog; //
import android.content.Context;
import android.content.Intent;

/*******************************************
 * wimm imports
 */

import com.wimm.framework.app.LauncherActivity;
//import com.wimm.framework.app.TextInputDialog;
mport com.wimm.framework.app.TimePickerDialog;
import com.wimm.framework.app.TimePickerDialog.OnTimeSelectedListener;
//import com.wimm.framework.app.DatePickerDialog;
//import com.wimm.framework.app.DatePickerDialog.OnDateSelectedListener;


public class ReminderEditFragment
             extends Fragment
             implements OnDateSetListener,
           //             OnTimeSetListener,
                        LoaderCallbacks<Cursor> 
   {

    private TimePickerDialog timeDialog;
    //private EditText timeDisplay;

    private static int intHours = 0;
    private static int intMinutes = 0;
    private long lngNewMs = 0;
    private Calendar calC ;

    // define constent to be used 
    private static final String DATE_FORMAT = "yyyy-MM-dd";
    private static final String TIME_FORMAT = "kk:mm";

    static final int TIME_DIALOG_ID = 0;
    static final int PILLS_DIALOG_ID = 1;

    public static final String DEFAULT_EDIT_FRAGMENT_TAG = "editFragmentTag"; 
    private EditText mTitleText;

    private EditText mBodyText;
    //private TextInputDialog textDialog;
    //private TextInputDialog mBodyDialog;

    //private TimePickerDialog timeDialog;
    private Button mTimeButton;


    //private Button timeDisplay;

    //private TimePickerDialog mTimeDialog;

    private Button mDateButton;
    private Button mConfirmButton;
    private Calendar mCalendar;

    //OK
    @Override
    public void onSaveInstanceState(Bundle outState)
       {
        super.onSaveInstanceState(outState);
        // save the calendar instance
            outState.putSerializable(CALENDAR, mCalendar);
       }

    private long mRowId;        


    //OK
    @Override
    public void onCreate(Bundle savedInstanceState)
       { 
        //-- house keeping
        super.onCreate(savedInstanceState);
        Log.d("RemindEF","S onCrt");

        if (savedInstanceState != null &&
            savedInstanceState.containsKey(CALENDAR) )
           {
             mCalendar = (Calendar) savedInstanceState.getSerializable(CALENDAR);
             Log.d("RemindEF","Cs onCrt:" + mCalendar);
           }
        else
           {
             mCalendar = Calendar.getInstance();
             Log.d("RemindEF","C onCrt:" + mCalendar);
           }
        Bundle arguments = getArguments(); 

        //-----------------
        //  retrieve row id from list
        if (arguments != null)
           {
            mRowId = arguments.getLong(ReminderProvider.COLUMN_ROWID);
            Log.d("RemindEF","A onCrt:" + mRowId);
               }                

        //-----------------------------------------------
        // initialize time entry listener
    //???????? ERROR: The method setContentView(int) is undefined for the type ReminderEditFragment
           setContentView(R.layout.reminder_edit);

           Log.d("RemindEF","X onCrt");

    //???????ERROR: The method findViewById(int) is undefined for the type ReminderEditFragment
           mTimeButton = (Button)findViewById(R.id.reminder_time); 
           Log.d("MedsMC","S onCrt-2L" + mTimeButton);

    //?????? ERROR: The constructor TimePickerDialog(ReminderEditFragment) is undefined
            TimePickerDialog myTimerHandler = new TimePickerDialog(this);
            myTimerHandler.setTime(6, 0);
            myTimerHandler.setTimeSelectedListener(timeSetListener);
            Log.d("MedsMC","S onCrt-3myTH" + mTimeButton);
4

3 に答える 3

1

これは主に、コンパイル エラーの意味を説明する試みです。


エラー: メソッド setContentView(int) はタイプ ReminderEditFragment に対して定義されていません

setContentViewでメソッドを呼び出していますが、そのようなメソッドReminderEditFragmentReminderEditFragmentありません。

Activity.setContentViewに電話をかけようとしているようthisです。しかし、リファクタリングのせいで...でthisはありません。Activity

エラー: メソッド findViewById(int) はタイプ ReminderEditFragment に対して定義されていません

Activity別の方法については、上記と同じです。

(私は Android の専門家ではありませんが、Activity で行うべきことを Fragment で行っているようです。おそらく、Fragment クラスには、それらの呼び出しに使用できる Activity インスタンスへの参照が必要です。. . ?)


エラー: コンストラクタ TimePickerDialog(ReminderEditFragment) は未定義です

標準TimePickerDialogクラスには 2 つのコンストラクターがありますが、どちらもReminderEditFragment引数を 1 つも取りません。TimePickerDialogjavadocを見る必要があります...

于 2013-03-30T01:00:12.870 に答える
0

1) XML ファイルがアクティブな場合は、アプリを実行しないでください。
実行した場合は、プロジェクトをクリーンアップし、生成されたファイルを削除します

Ctrl + Shift + S2)ウィジェットをレイアウトに追加した後は、必ずプロジェクトを保存してください。保存後、このウィジェットのアドレスが生成され、問題はありません
The method findViewById(int) is undefined for the type ReminderEditFragment

于 2013-03-30T01:12:02.480 に答える
0

で使用されていたコードをコピーして、Activityで使用していFragmentます。

これには、いくつかの変更が必要です。

setContentView(R.layout.reminder_edit);

これは、レイアウトを設定するために使用されます。内 と 呼 ば れ るonCreate()

mTimeButton = (Button) findViewById(R.id.reminder_time); 

これは、特定のビューへの参照を取得するために使用されます。

ではFragment、レイアウトを設定してビューを見つけるために、オーバーライドしますonCreateView():

@Override
public View onCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
    View v = inflater.inflate(R.layout.reminder_edit, null);
    mTimeButton = (Button) v.findViewById(R.id.reminder_time); 
    return v;
}


TimePickerDialog myTimerHandler = new TimePickerDialog(this);

TimePickerDialogコンストラクタの引数はContextオブジェクトです。In a Activitythisは、Activity のインスタンスを参照するため有効です。フラグメントでは、getActivity()代わりに呼び出す必要があります。

TimePickerDialog myTimerHandler = new TimePickerDialog(getActivity());
于 2013-03-30T01:08:27.037 に答える