android - 如何删除错误: create method 'getApplicationContext()' and 'runOnUiThread(Runnable)' when extends Fragment

标签 android fragment android-context

当我使用getApplicationContext()时,Eclipse给我错误create method 'getApplicationContext()'。请让我知道如何消除此错误。我也尝试使用 ClassName.this 那个时间错误,例如将方法 startListening(Context) 更改为 startListening(Main)

此外,当我使用类似:measurement_index = AppSettings.getMeasureUnit(this); 然后错误如下:将方法 getMeasureUnit(Context) 更改为 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() 方法添加到上面扩展 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);
}

最佳答案

在 Fragment 中,您可以使用 getActivity().getApplicationContext() 代替。

对于 AppSettings.getMeasureUnit 错误,如果 getMeasureUnit 方法需要上下文,您通常可以使用 getActivity().getApplicationContext()

关于android - 如何删除错误: create method 'getApplicationContext()' and 'runOnUiThread(Runnable)' when extends Fragment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13523526/

相关文章:

android - 如何在整洁架构内传递android上下文

java - 从十六进制颜色转换为 RGB

java - 安卓Java : Fragments returning null view in onCreateView()

android - 如何为应用程序上下文启动 Intent

android - 更改 fragment onAdclose。插页式广告

android - Recyclerview 滚动在嵌套 ScrollView 中的 fragment 中不起作用

android - 如何访问android库自己的资源

java - Android 开发多设备

Android:如何完全禁用 Edittext 中的复制和粘贴功能

android - 使用 CompilerOptions.versionToJdkLevel 的 GreenDao 3.2 构建失败