
我想在使用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类中所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)