2016-11-09 62 views
1

我最近开始使用android注解,并试图从类(MyService)中设置各种TextView的文本。从另一个类访问TextView的Android注解问题

不幸的是,当我尝试设置文本时,该应用程序与nullpointerexception崩溃。

我已经看过注释(documentation)和在stackoverflow上搜索相同的问题,但我无法找到正确的方法。

如果有人能帮助我以正确的方式做到这一点,我会很乐意。

因为我正在学习注释,所以请对downvotes温和。

其中TextViews通过所发起的类(DownloadsDialog)(@ViewById):

@EFragment(R.layout.downloads_dialog) 
public class DownloadsDialog extends BaseDialog implements LoaderManager.LoaderCallbacks<BaseResponse> { 
.. 
@ViewById(R.id.statusTxt) 
    TextView mStatusTxt; 

@ViewById(R.id.sizeTxt) 
    TextView mSizeTxt; 

@ViewById(R.id.progress1) 
    ProgressBar mProgress; 
.. 
} 

这是类(为MyService),从中我想组文本这些TextViews:

public class MyService extends IntentService { 
.. 
public MyService() { 
     super("MyService"); 
    } 
.. 

class MyDownloadDownloadStatusListenerV1 implements DownloadStatusListenerV1 { 

     @Override 
     public void onDownloadComplete(DownloadRequest request) { 
      final int id = request.getDownloadId(); 
      if (id == downloadId1) { 
       // How to access TextView in DownloadsDialog?      
      mStatusTxt.setText("Status: completed");      

      Log.e("TAG", "download completed"); 
      } 
     } 
.. 
} 

回答

0

如何意向服务可以查看或L ayout文件?

@EFragment(R.layout.downloads_dialog) 

这样,你是在告诉这是视图文件中,我所有的下面提到这样库会从那里获取,然后分配ID来你的java对象部件。

@EBean 

但在意图服务的情况下,没有布局文件,因此很明显,它将使空指针。

+0

Thx for replying,Ok so the“@ViewById”and“@EBean”should be removed in class MyService?如何在DownloadsDialog中访问TextViews?代码编辑。 – Simon

+0

您既可以在服务中创建警报对话框并使用处理程序显示它,也可以在对话框中将字段设置为静态并将对话框对象传递给服务,然后从那里您可以使用静态引用修改textview对象。 – androidnoobdev

+0

Ok thx,@ViewById(R.id.statusTxt)public static TextView mStatusTxt;但Android Studio会警告这会导致内存泄漏。 – Simon