如何删除错误:扩展Fragment时创建方法'getApplicationContext()'和'runOnUiThread(Runnable)'

Rah*_*tel 2 android fragment android-context

当我使用getApplicationContext()那个时候eclipse给我错误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. create方法'getApplicationContext()'

  2. 将方法getMeasureUnit(Context)更改为getMeasureUnit(Main)

检查我的代码.

Main.class

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;
}
Run Code Online (Sandbox Code Playgroud)

startListening方法:

public void startListening(final Context context)
{
     ....
}
Run Code Online (Sandbox Code Playgroud)

getMeasureUnit方法:

public static int public static int getMeasureUnit(Context context){
    return getInt(context,AppSettings.UNIT_STRING);
} 
Run Code Online (Sandbox Code Playgroud)

编辑:

我已经将onStart()方法添加到上面的类中,扩展了fragment.在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);
}
Run Code Online (Sandbox Code Playgroud)

yyd*_*ydl 5

在片段中,您可以getActivity().getApplicationContext()改为使用.

至于AppSettings.getMeasureUnit错误,如果getMeasureUnit方法期望您可以经常使用的上下文getActivity().getApplicationContext().