2012-09-23 2 views
1

어디에서나 보았지만 찾고있는 것을 찾을 수 없습니다.setOnClickListener의 변수를 확인할 수 없습니다.

Fragment 안에 Chronometer을 사용하여 Android 용 스톱워치 앱을 만들려고 시도 중이지만 일부 버튼의 경우 setOnClickListener에서 오류가 발생합니다.

괄호 "()"안에있는 변수입니다. (mStartListener), 오류 mStartListener cannot be resolved to a variable가 표시됩니다.

도와주세요, 정말 안드로이드 개발에 들어가고 싶습니다. 당신에게

감사하는 것은 여기에 코드를입니다

b = (Button) getView().findViewById(R.id.start); 
b.setOnClickListener(mStartListener); //--- error 
b = (Button) getView().findViewById(R.id.stop); 
b.setOnClickListener(mStopListener); //--- error 
b = (Button) getView().findViewById(R.id.reset); 
b.setOnClickListener(mResetListener); //--- error 

전체 코드 : 당신은 클래스 변수로 각 리스너를 선언

import android.app.Fragment; 
import android.os.Bundle; 
import android.os.SystemClock; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.Chronometer; 

public class StopWatchFragment extends Fragment { 

    Chronometer mChronometer; 

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

    @Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.stopwatch, container, false); 

     Button b; 
     mChronometer = (Chronometer) getView().findViewById(R.id.chronometer); 
     // Watch for button clicks. 
     b = (Button) getView().findViewById(R.id.start); 
     b.setOnClickListener(mStartListener); //--- error 
     b = (Button) getView().findViewById(R.id.stop); 
     b.setOnClickListener(mStopListener); //--- error 
     b = (Button) getView().findViewById(R.id.reset); 
     b.setOnClickListener(mResetListener); //--- error 


     return view; 


    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()); 
    } 
    }; 
} 
} 

답변

1

이동 :

public class StopWatchFragment extends Fragment { 

    Chronometer mChronometer; 
    View.OnClickListener mStartListener; 
    ... 

또는 단지 선언하여 청취자 전에 당신이 그들을 사용하려고 : 당신은 OnClickListener를로 설정하려고 정의하고 후 onCreateView 방법 내부 mStopListener, 를 초기화하는

Button b; 
mChronometer = (Chronometer) getView().findViewById(R.id.chronometer); 

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

// Watch for button clicks. 
b = (Button) getView().findViewById(R.id.start); 
b.setOnClickListener(mStartListener); //--- no more error 
+0

정말 고마워요! 그것은 효과가 있었고, 오류는 없었지만 이제는 조각을 실행하면 Force가 닫힙니다. – Jakob

+0

반갑습니다. LogCat 오류가 포함 된 새로운 질문을 게시 할 수없는 경우 Force Close 문제를 해결하기 위해 최선을 다하십시오. – Sam

+0

다시 감사합니다. 정말로 도움을 주셔서 감사합니다. – Jakob

0

.

당신은 당신의 방법의 시작으로 이동해야 하나 :

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.stopwatch, container, false); 
    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()); 
     } 
    }; 
    Button b; 
    mChronometer = (Chronometer) getView().findViewById(R.id.chronometer); 
    // Watch for button clicks. 
    b = (Button) getView().findViewById(R.id.start); 
    b.setOnClickListener(mStartListener); //--- error 
    b = (Button) getView().findViewById(R.id.stop); 
    b.setOnClickListener(mStopListener); //--- error 
    b = (Button) getView().findViewById(R.id.reset); 
    b.setOnClickListener(mResetListener); //--- error 

    return view; 



} 

또는 전역 변수와 같은 방법 밖에 넣어.

관련 문제