如何清除错误:创建方法“getApplicationContext()”和“runOnUiThread(可运行)'时,伸出片段片段、错误、方法、getApplicationContext

2023-09-07 09:19:02 作者:元气少女的内心

当我使用 getApplicationContext()那个时候日食给我的错误创建方法getApplicationContext() 。请让我知道如何删除此错误。我也尝试使用 ClassName.this 这样的时间误差更改方法startListening(上下文),以startListening(主)

此外,当我使用这样的: measurement_index = AppSettings.getMeasureUnit(本);  然后像错误:更改方法getMeasureUnit(上下文),以getMeasureUnit(主)

所以,请让我知道如何解决类似的错误:

create方法getApplicationContext()

更​​改方法getMeasureUnit(上下文),以getMeasureUnit(主)

检查我的code。

Main.class

 公共类主要扩展片段实现GPSCallback {

.......

公共静态片段的newInstance(INT位置){
    主F =新的Main();
    捆绑的args =新包();

     ...

}

@覆盖
公共查看onCreateView(LayoutInflater充气,容器的ViewGroup,
        捆绑savedInstanceState){

    最后的ViewGroup根=(ViewGroup中)inflater.inflate(R.layout.main,NULL);

    / *意图=新的意图(Main.this,MainDisplay.class);
              // ------------>这里给出的错误,如:删除参数匹配的Intent();
    startActivity(在); * /

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

     gpsManager =新GPSManager();

        gpsManager.startListening(getApplicationContext());
                   // ------------> ECLIPSE给我错误创建方法getApplicationContext()

        gpsManager.setGPSCallback(本);

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

        measurement_index = AppSettings.getMeasureUnit(本);
                   // ------------>在这里,给我这样的错误:更改方法getMeasureUnit(上下文),以getMeasureUnit(主)


    btnstart =(按钮)root.findViewById(R.id.button_start);
    btnstart.setOnClickListener(新OnClickListener(){

        @覆盖
        公共无效的onClick(视图v){
            // TODO自动生成方法存根


        }
    });

    返回根;
}
 

startListening 方式:

 公共无效startListening(最终上下文的背景下)
{
     ....
}
 
解决Windows7提示 错误16389, 无法新建库 的问题

getMeasureUnit 方式:

 公共静态INT公共静态INT getMeasureUnit(上下文的背景下){
    返回调用getInt(背景下,AppSettings.UNIT_STRING);
}
 

编辑:

我已经添加了 ONSTART()方法到上面的类扩展片段。 那个时候,在 runOnUiThread(updateTask); 的Eclipse给我这样的错误: create方法runOnUiThread(Runnable接口)。请让我知道我能做到这一点。

  @覆盖
公共无效的OnStart(){
    super.onStart();
    定时器=新的定时器(DigitalClock);
    台历挂历= Calendar.getInstance();

    //获取当前时间
    最终的可运行updateTask =新的Runnable(){
        公共无效的run(){
            txt_display_clock.setText(getCurrentTimeString()); //显示当前
                                                        //在一天中的时间

        }
    };

    //更新UI
    INT毫秒= 999  -  calendar.get(Calendar.MILLISECOND);
    timer.scheduleAtFixedRate(新的TimerTask(){
        @覆盖
        公共无效的run(){
            runOnUiThread(updateTask); //< ----------------这里
        }
    },毫秒,1000);
}
 

解决方案

在一个片段中,可以使用 getActivity()。getApplicationContext()代替。

对于AppSettings.getMeasureUnit错误,如果getMeasureUnit方法需要另外一种情况下,你通常可以使用 getActivity()。getApplicationContext()

When I am using the getApplicationContext() that time eclipse give me error create method 'getApplicationContext()'. Please let me know How to remove this error. I am try also using ClassName.this that time error like change method startListening(Context) to startListening(Main)

Also when I use like : measurement_index = AppSettings.getMeasureUnit(this); then Error like :change method getMeasureUnit(Context) to getMeasureUnit(Main)

So please let me know how can solve error like:

create method 'getApplicationContext()'

change method getMeasureUnit(Context) to getMeasureUnit(Main)

Check my code.

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

startListening method:

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

getMeasureUnit method:

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

EDIT :

I have Added the onStart() method into above class that extends fragment. That time at runOnUiThread(updateTask); Eclipse give me error like : create method runOnUiThread(Runnable) .Please let me know how can I achieve this.

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

解决方案

In a Fragment, you can use getActivity().getApplicationContext() instead.

As for the AppSettings.getMeasureUnit error, if the getMeasureUnit method is expecting a context you can usually use getActivity().getApplicationContext().