从Android中的非活动类调用方法(上下文上下文)

时间:2014-08-20 09:21:37

标签: android class android-context

我有2个班,一个有活动,一个有非。 这是:

public class getinfo extends ContextWrapper
{
public String getemei(Context context)
    {
        TelephonyManager mTelephonyMgr;
        mTelephonyMgr = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
        String imei = mTelephonyMgr.getDeviceId();
         return imei;
        }
}

那么如何从主类调用getimei类中的方法getinfo

//编辑,谢谢,它完成了,这应该是

    public class MainActivity extends Activity {
    Button bnt;
   getinfo gif = new getinfo(null);   //edited-work fine
    @Overide
        public void onCreate(Bundle savedInstanceState) {
     bnt.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    String getemei = gif.getemei(getApplicationcontext()); //Work fine
                    tv.setText(getemei);

                }
    }
}

3 个答案:

答案 0 :(得分:0)

您可以通过创建类

的对象来调用类的方法
 getinfo gf=new getinfo();

//调用方法

String a=gf.getemei(getApplicationContext());

直接致电

 public void onCreate(Bundle savedInstanceState) {
 bnt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                 TelephonyManager mTelephonyMgr;
    mTelephonyMgr = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
    String imei = mTelephonyMgr.getDeviceId();

                tv.setText(imei);

            }

答案 1 :(得分:0)

在侦听器中使用this时,您将传递覆盖当前方法的对象的实例。你需要写MainActivity.this。您的代码需要看起来像这样 String getemei = gif.getemei(MainActivity.this);

我不建议像你一样实现对IMEI的访问。这里的最佳做法是使用MVC Pattern并使用模型来访问这些值。

答案 2 :(得分:0)

带构造函数的非活动类

  public class getinfo extends ContextWrapper
    {
Context _con;
public getinfo(Context c)
{
_con=c;
}
    public String getemei()
        {
            TelephonyManager mTelephonyMgr;
            mTelephonyMgr = (TelephonyManager) _con.getSystemService(_con.TELEPHONY_SERVICE);
            String imei = mTelephonyMgr.getDeviceId();
             return imei;
            }
    }

带有实现的活动类

         public class MainActivity extends Activity {
            Button bnt;
           getinfo gif;
            @Overide
                public void onCreate(Bundle savedInstanceState) {
             bnt.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            // TODO Auto-generated method stub
                            gif=new getinfo(this); 
    String getemei=gif.getemei();
                            tv.setText(getemei);

                        }
            }
        }

使用下面的代码希望它能帮到你