2013-03-30 4 views
0

나는 아주 좌절 된 새끼입니다! 나는 어디서부터 시작해야할지 정말로 모른다. 나는 인형 책에있는 것을 기반으로 한 앱을 가지고있다. 알았어. 그런 다음 시간과 날짜에 대해 WIMMOne 대화 상자를 사용하도록 변환하려고했습니다. 잘못된 출발이 많아지면서 샘플 중 하나를로드하고 작동 시켰습니다. 그런 다음 코드를 분리하여 샘플에 붙여 넣었습니다. 나는 과거의 실수를 얻을 수 없다. (이클립스가 그 자체의 일부를 끊임없이 추가하는 것을 돕지 않는다. 때때로 나는 소스를로드하고, 수입을 포함한 모든 문장은 에러로 표시된다. 때때로 나는 R.id를 얻는다. --- 에러가 난다. 이 오류로 의견을 표시했다. 그러나컴파일 오류가 발생하는 경우, 잘 모르겠 음

, 난 내가 아래로 몇 실제 에러라고 생각 충분한 시간을 청소하고 다시로드했습니다.

광산 및 샘플 코드 사이의 몇 가지 기본적인 차이가있다 : 샘플은 하나의 커다란 활동 자바 파일이고, 광산은 단편입니다 .Mine에는 시간 대화 상자에 대한 별도의 Java 파일이 있습니다. 샘플은 하나의 파일에 있으므로 광산을 코딩했습니다 .Mine에는 두 개의 메뉴, 목록 사용자가 "세부 사항"메뉴로 이동합니다. 샘플은 모두 하나의 화면입니다.

WIMM에서 2 개의 JAR 파일이 있었는데, 둘 다 내 라이브러리에 있습니다.

공간을 절약하기 위해 처음으로 3 개의 오류가 발생했지만 필요한 경우 모두 제공해 드리겠습니다.

첫 번째 샘플입니다. 클라크

이 오류의 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); 

을 감사합니다 : 그것은 작동하고 심지어 내 주석 코드, 더 컴파일 오류가없는 "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); 
+0

오류 메시지는 존재하지 않는 클래스에서 메소드를 호출하려고하고 있음을 나타냅니다. 예제 코드에서 _setContentView() _라는 메서드는 _MaicationsActivity_ 클래스의 일부이며 _LauncherActivity_ (아마도 _Activity_를 확장) 클래스를 확장합니다. 어쩌면 당신의 클래스는 _Assivity _...를 확장해야만한다. 각 클래스는 자바에서 하나의 클래스만을 확장 할 수있다. – jahroy

답변

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 개체입니다. 활동 내역 this은 활동 인스턴스를 참조하기 때문에 유효합니다. 조각에서는 getActivity() (으)로 전화해야합니다.

TimePickerDialog myTimerHandler = new TimePickerDialog(getActivity()); 
+0

감사합니다. 답장을 매우 감사드립니다! (또한 @ stephen-c, @ dima) 나는 그 조각 때문일 것 같은 느낌이 들었지 만, "인형"책은 그것이 어떻게 행해졌는지 암시하므로 나는 응했다. 당신의 도움으로 도망 쳤고, 선택한 목록과이 화면으로갔습니다. 나는 하나의 오류에 빠졌고, 나는 "showDialog (int)"를 가지고있다. 다양한 글을 읽을 때, 그것은 파편에서도 작동하지 않습니다. 이것은 매우 간단한 응용 프로그램이지만 datePicker와 텍스트가 필요합니다. 그래서 가장 쉬운 단계는 내 코드를 액티비티로 옮기고 적어도이 화면에서 조각을 사용하지 않는 것입니다. 똑똑한 시계로 오리엔테이션을 다룰 필요가 없습니다. – ClarkG

1

이것은 컴파일 오류가을 의미 무엇인지 설명하기 위해 주로이다.


ERROR: The method setContentView(int) is undefined for the type ReminderEditFragment

당신은 ReminderEditFragmentsetContentView 메소드를 호출하는

하지만 ReminderEditFragment은 그런 방법이 없습니다.

Activity.setContentViewthis에 보내고있는 것으로 보입니다. 하지만 this은 리팩토링 때문에 Activity이 아닙니다.

ERROR: The method findViewById(int) is undefined for the type ReminderEditFragment

다른 것과 마찬가지로, Activity 방법.

(필자는 Android 전문가가 아니지만 Activity에서해야하는 Fragment에서 일을하고있는 것처럼 보입니다.) Fragment 클래스에서 사용할 수있는 Activity 인스턴스에 대한 참조가 필요할 수도 있습니다. 이러한 호출 ...?)


ERROR: The constructor TimePickerDialog(ReminderEditFragment) is undefined

표준 TimePickerDialog 클래스는이 생성자를 가지고 있지만, 그 중 어느 것도 하나의 ReminderEditFragment 인수를. 당신은 TimePickerDialog javadoc을 봐야합니다.

0

1) 활성 XML 파일 일 때 앱을 실행하지 마십시오.
프로젝트를 청소하고 생성 된 파일을 제거하십시오.

2) 레이아웃에 위젯을 추가 한 후에 프로젝트 Ctrl + Shift + S을 저장하십시오. 저장하면이 위젯의 ​​주소가 생성되고 아무런 문제가 없습니다.
The method findViewById(int) is undefined for the type ReminderEditFragment

관련 문제