android – findViewById在非Activity类中

android – findViewById在非Activity类中,第1张

概述仍然是相对较新的我在查找我在活动类MainActivity中使用的非活动类MyLocation中遇到问题时遇到了问题.我正在使用MyLocation来获取经度和纬度. 我想在使用GPS或网络时突出显示文本视图.为此,我需要在非活动类MyLocation中查找textviews. 以下是我在MainActivity中调用它的方法: public class MainActivity extends 仍然是相对较新的我在查找我在活动类MainActivity中使用的非活动类MyLocation中遇到问题时遇到了问题.我正在使用MyLocation来获取经度和纬度.
我想在使用GPS或网络时突出显示文本视图.为此,我需要在非活动类MyLocation中查找textvIEws.

以下是我在MainActivity中调用它的方法:

public class MainActivity extends ActionBaractivity implements LocationListener {@OverrIDeprotected voID onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentVIEw(R.layout.main);            MyLocation myLocation = new MyLocation();            myLocation.getLocation(this,locationResult);}

在这里我在MyLocation中尝试查找textvIEws:

public class MyLocation {LocationManager lm;LocationResult locationResult;private Context context;TextVIEw tvnetwork,tvgps;private int defaultTextcolor;LocationListener locationListenerNetwork = new LocationListener() {    public voID onLocationChanged(Location location) {        locationResult.gotLocation(location);        LayoutInflater inflater = (LayoutInflater) context                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);        VIEw v = inflater.inflate(R.layout.main,null);        tvnetwork = (TextVIEw) v.findVIEwByID(R.ID.tvnetwork);        tvgps = (TextVIEw) v.findVIEwByID(R.ID.tvgps);        defaultTextcolor = tvgps.getTextcolors().getDefaultcolor();        tvnetwork.setTextcolor(context.getResources().getcolor(                R.color.green));        tvgps.setTextcolor(defaultTextcolor);        lm.removeUpdates(this);        lm.removeUpdates(locationListenerGps);    }    public voID onProvIDerDisabled(String provIDer) {    }    public voID onProvIDerEnabled(String provIDer) {    }    public voID onStatusChanged(String provIDer,int status,Bundle extras) {    }};

但没有找到意见.我已经获得了NPE @ .getSystemService(Context.LAYOUT_INFLATER_SERVICE);.我究竟做错了什么?

解决方法

get a NPE @ .getSystemService(Context.LAYOUT_INFLATER_SERVICE);. What
am I doing wrong?

因为MyLocation类中的上下文为null.使用MyLocation类构造函数在MyLocation中传递MainActivity上下文以访问系统服务:

Activity activity;public MyLocation(Context context,Activity activity){this.context=context;this.activity=activity;}

并在MainActivity中通过将MainActivity上下文传递为:创建MyLocation类对象:

MyLocation myLocation = new MyLocation(MainActivity.this,this);

现在使用上下文访问MyLocation类中的系统服务

编辑:而不是在onLocationChanged中再次膨胀主布局使用Activity上下文从Activity Layout访问视图:

public voID onLocationChanged(Location location) {       ....        tvnetwork = (TextVIEw) activity.findVIEwByID(R.ID.tvnetwork);        tvgps = (TextVIEw) activity.findVIEwByID(R.ID.tvgps);        defaultTextcolor = tvgps.getTextcolors().getDefaultcolor();        tvnetwork.setTextcolor(context.getResources().getcolor(                R.color.green));        tvgps.setTextcolor(defaultTextcolor);       ....    }
总结

以上是内存溢出为你收集整理的android – findViewById在非Activity类中全部内容,希望文章能够帮你解决android – findViewById在非Activity类中所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1137326.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存