2015-02-06 6 views
-1

(코딩하는 것이 좋습니다.) 스톱워치 앱을 코딩 할 때 문제가 발생합니다.이 사이트를 청소하고 내 문제에 대한 해결책을 찾지 못했습니다. 내 코드가 동일한 튜토리얼을 시도한 다른 사용자의 코드인데, 나는 동일하다는 것을 알았지 만, 내가 알기에 몇 가지 미해결 된 심볼을 얻었을 때, 모든 것이 정확하다. ...스톱워치를 만들 때 기호 문제를 해결할 수 없습니다.

Ok, 나는 약간의 수정으로 파일을 갱신했다. 지금

(다음은 주요 활동 자바 파일이야) ...

을 시작/중지와 더 이상 오류를 가지고,하지만 난 m (시작/정지/등) 리스너 코드와 함께 새로운 오류가없는 메신저

package com.jackson.eason.stopwatch.; 
 
import android.app.Activity; 
 
import android.os.Bundle; 
 
import android.os.SystemClock; 
 
import android.view.View; 
 
import android.view.View.OnClickListener; 
 
import android.widget.Button; 
 
import android.widget.Chronometer; 
 
import android.support.v7.app.ActionBarActivity; 
 
import android.os.Bundle; 
 
import android.view.Menu; 
 
import android.view.MenuItem; 
 
import your.package.R; 
 

 
public class MainActivity extends Activity { 
 
    Chronometer mChronometer; 
 

 
    @Override 
 
    protected void onCreate(Bundle savedInstanceState) { 
 
     super.onCreate(savedInstanceState); 
 

 
     setContentView(R.layout.activity_main); 
 

 
     Button button; 
 

 
     mChronometer = (Chronometer) findViewById(R.id.Chronometer); 
 

 
     // Watch for button clicks. 
 
     button = (Button) findViewById(R.id.start); 
 
     button.setOnClickListener(mStartListener); 
 

 
     button = (Button) findViewById(R.id.stop); 
 
     button.setOnClickListener(mStopListener); 
 

 
     button = (Button) findViewById(R.id.reset); 
 
     button.setOnClickListener(mResetListener); 
 

 
     button = (Button) findViewById(R.id.set_format); 
 
     button.setOnClickListener(mSetFormatListener); 
 

 
     button = (Button) findViewById(R.id.clear_format); 
 
     button.setOnClickListener(mClearFormatListener); 
 

 
     View.OnClickListener mStartListener = new OnClickListener() { 
 
      public void onClick(View v) { 
 
       mChronometer.start(); 
 
      } 
 
     }; 
 

 
     View.OnClickListener mStopListener = new OnClickListener() { 
 
      public void onClick(View v) { 
 
       mChronometer.stop(); 
 
      } 
 
     }; 
 

 
     View.OnClickListener mResetListener = new OnClickListener() { 
 
      public void onClick(View v) { 
 
       mChronometer.setBase(SystemClock.elapsedRealtime()); 
 
      } 
 
     }; 
 

 
     View.OnClickListener mClearFormatListener = new OnClickListener() { 
 
      public void onClick(View v) { 
 
       mChronometer.setFormat(null); 
 
      } 
 
     }; 
 
    } 
 

 

 
    }

내가 어떤 도움 누군가가 제공 할 수있는 감사

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:padding="4dip" 
    android:gravity="center_horizontal" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

    <Chronometer android:id="@+id/chronometer" 
     android:format="@string/chronometer_initial_format" 
     android:layout_width="wrap_content" 
     android:layout_height="0dp" 
     android:layout_weight="0" 
     android:paddingBottom="30dip" 
     android:paddingTop="30dip" 
     /> 

    <Button android:id="@+id/start" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="start"> 
     <requestFocus /> 
    </Button> 

    <Button android:id="@+id/stop" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="chronometer_stop"> 
    </Button> 

    <Button android:id="@+id/reset" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="reset"> 
     </Button> 

    <Button android:id="@+id/set_format" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="format"> 
    </Button> 

    <Button android:id="@+id/clear_format" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="clear_format"> 
    </Button> 

    </LinearLayout> 

(또한, 여기에 안드로이드 개발자 괜찮 말한다 내 XML 파일입니다)!

+0

import 'import android.R;'가 잘못되었습니다. 이렇게하면 프로젝트 자원에 대해 전혀 알지 못하는 일반적인'R' 버전을 가져옵니다. – Tom

답변

0

잘못된 R 클래스를 가져 오는 중 문제가 발생했습니다. android.R은 앱용으로 생성되고 리소스를 참조하는 R 파일과는 다르지만 프레임 워크 자체의 R 파일이므로 사용자는 편의 리소스를 사용할 수 있습니다 (예 : this question).

import android.R; 

는 타 노스 제안대로 onCreate 방법 내부 리스너 선언을 넣어, 또한

import your.package.R; 

와 그 대체합니다.

UPDATE : 나는이 your.package.R 말했을 때

, 그냥 예를 들어했다. 패키지는 프로젝트를 만들 때 선택한 항목에 따라 다르지만 제공 한 코드로 판단하면 가져 오기가 필요할 수 있습니다. com.jackson.eason.stopwatch.R

둘째, 리스너를 사용하기 전에 먼저 선언해야합니다. 그렇지 않은 경우 setOnClickListener(mClearFormatListener)을 호출했지만 mClearFormatListener을 선언하면 컴파일러는 mClearFormatListener을 아직 알지 못하므로 컴파일 오류가 발생합니다. 아래 코드가 작동해야합니다.

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.activity_main); 

    // Get references to views 
    mChronometer = (Chronometer) findViewById(R.id.Chronometer); 
    Button button1 = (Button) findViewById(R.id.start); 
    Button button2 = (Button) findViewById(R.id.stop); 
    Button button3 = (Button) findViewById(R.id.reset); 
    Button button4 = (Button) findViewById(R.id.set_format); 
    Button button5 = (Button) findViewById(R.id.clear_format); 

    // Declare the listeners 
    View.OnClickListener mStartListener = new OnClickListener() { 
     public void onClick(View v) { 
      mChronometer.start(); 
     } 
    }; 

    View.OnClickListener mStopListener = new OnClickListener() { 
     public void onClick(View v) { 
      mChronometer.stop(); 
     } 
    }; 

    View.OnClickListener mResetListener = new OnClickListener() { 
     public void onClick(View v) { 
      mChronometer.setBase(SystemClock.elapsedRealtime()); 
     } 
    }; 

    // You forgot to declare a listener for set format in your updated code 
    View.OnClickListener mSetFormatListener = new OnClickListener() { 
     public void onClick(View v) { 
      // TODO : set the format 
     } 
    }; 

    View.OnClickListener mClearFormatListener = new OnClickListener() { 
     public void onClick(View v) { 
      mChronometer.setFormat(null); 
     } 
    }; 

    // Assign the listeners to your buttons 
    button1.setOnClickListener(mStartListener); 
    button2.setOnClickListener(mStopListener); 
    button3.setOnClickListener(mResetListener); 
    button4.setOnClickListener(mSetFormatListener); 
    button.setOnClickListener(mClearFormatListener); 


} 

마지막 한가지는 : 방법 내부 변수에 반대로 표기 mVariable에서, m은 클래스의 멤버 변수를 의미하는 "회원"을 의미합니다. 리스너는 메서드 내에서만 선언되므로 일반적으로 mListener이 아니라 listener이 사용됩니다. 물론, 이것은 단지 명명 규칙 일 뿐이며 코드가 컴파일되고 실행되는 것을 막지는 못합니다;)

+0

많이 감사, 지금, 내가 정확히 당신의 자리에 넣어합니까? –

+0

좋아, 그래서 시작/중지/등 오류를 수정 한 oncreate 안에 리스너를 추가했지만 모든 m (중지/시작/재설정/등) 수신기 줄에 대한 새 오류가 발생했습니다 –

+0

질문을 업데이트 할 수 있습니까 당신이 변경 한 내용과 당신이 받고있는 오류가 있습니까? 우리는 거기에 갈 것이다 :-) – 2Dee

0

모든 청취자는 메소드 안에 있어야한다고 생각합니다. 내가 잘못? onCreate 메소드 안에 배치 해보십시오 (맨 끝에서).

+0

감사합니다! 윌 –