Как удалить ошибку: создать метод getApplicationContext() и runOnUiThread(Runnable) при расширении фрагмента

Когда я использую getApplicationContext(), затмение этого времени дает мне ошибку create method 'getApplicationContext()'. Подскажите, пожалуйста, как убрать эту ошибку. Я также пытаюсь использовать ClassName.this в ту временную ошибку, например change method startListening(Context) to startListening(Main)

Также, когда я использую как: measurement_index = AppSettings.getMeasureUnit(this);, тогда ошибка как: change method getMeasureUnit(Context) to getMeasureUnit(Main)

Поэтому, пожалуйста, дайте мне знать, как можно решить ошибку, например:

  1. создать метод 'getApplicationContext()'

  2. изменить метод getMeasureUnit(Context) на getMeasureUnit(Main)

Проверьте мой код.

Основной.класс

public class Main extends Fragment implements GPSCallback{

....... 

public static Fragment newInstance(int position) {
    Main f = new Main();
    Bundle args = new Bundle();

     ...

}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    final ViewGroup root = (ViewGroup) inflater.inflate(R.layout.main, null);

    /*Intent in = new Intent(Main.this,MainDisplay.class);
              // ------------> Here give error like : Remove arguments match to Intent();
    startActivity(in);*/

    tv_display_Speed = (TextView) root.findViewById(R.id.speed_display);

     gpsManager = new GPSManager();

        gpsManager.startListening(getApplicationContext());
                   //------------>  Eclipse give me error create method 'getApplicationContext()'

        gpsManager.setGPSCallback(this);

        //(TextView)root.findViewById(R.id.speed_display);

        measurement_index = AppSettings.getMeasureUnit(this);
                   //------------> Here Give me error like : change method getMeasureUnit(Context) to  getMeasureUnit(Main) 


    btnstart = (Button) root.findViewById(R.id.button_start);
    btnstart.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub


        }
    });

    return root;
}

Метод startListening:

public void startListening(final Context context)
{
     ....
}

Метод getMeasureUnit:

public static int public static int getMeasureUnit(Context context){
    return getInt(context,AppSettings.UNIT_STRING);
} 

ИЗМЕНИТЬ:

Я добавил метод onStart() в класс выше, который расширяет фрагмент. В этот раз в runOnUiThread(updateTask); Eclipse выдает ошибку типа: create method runOnUiThread(Runnable). Пожалуйста, дайте мне знать, как я могу этого добиться.

@Override
public void onStart() {
    super.onStart();
    timer = new Timer("DigitalClock");
    Calendar calendar = Calendar.getInstance();

    // Get the Current Time
    final Runnable updateTask = new Runnable() {
        public void run() {
            txt_display_clock.setText(getCurrentTimeString()); // shows the current
                                                        // time of the day

        }
    };

    // update the UI
    int msec = 999 - calendar.get(Calendar.MILLISECOND);
    timer.scheduleAtFixedRate(new TimerTask() {
        @Override
        public void run() {
            runOnUiThread(updateTask); // <---------------- HERE
        }
    }, msec, 1000);
}

person Rahul Patel    schedule 23.11.2012    source источник
comment
getActivity().getApplicationContext() подойдет.   -  person Mohammed Azharuddin Shaikh    schedule 23.11.2012
comment
@hotveryspicy Я хочу полную противоположность stackoverflow.com/a/13132567/1263679 , означает намерение от fragment to activity возможно ли это?   -  person Rahul Patel    schedule 23.11.2012
comment
@hotveryspicy Когда я добавил метод onstart(), то при использовании runOnUiThread(updateTask); в этот раз возникла ошибка, например: создать метод runOnUiThread (Runnable); Пожалуйста, проверьте мой обновленный код. и дайте мне решение.   -  person Rahul Patel    schedule 23.11.2012


Ответы (1)


Вместо этого во фрагменте вы можете использовать getActivity().getApplicationContext().

Что касается ошибки AppSettings.getMeasureUnit, если метод getMeasureUnit ожидает контекст, вы обычно можете использовать getActivity().getApplicationContext().

person yydl    schedule 23.11.2012
comment
Спасибо, дело сделано. и что насчет второй ошибки measurement_index = AppSettings.getMeasureUnit(this);. Могу ли я использовать getActivity().getApplicationContext() вместо this? - person Rahul Patel; 23.11.2012
comment
Когда я добавил метод onstart(), то при использовании runOnUiThread(updateTask); в этот раз возникла ошибка, например: create method runOnUiThread(Runnable); Пожалуйста, проверьте мой обновленный код. и дайте мне решение. - person Rahul Patel; 23.11.2012