最近Androidのアノテーションを使用し始めましたが、クラス(MyService)内からさまざまなTextViewにテキストを設定しようとしています。別のクラスからTextViewにアクセスする際のAndroidアノテーションの問題
テキストを設定しようとしたときに残念ながら、アプリケーションがnullpointerexceptionでクラッシュします。
私はすでに注釈(documentation)とを探しましたが、同じ問題についてはstackoverflowで検索しましたが、これで正しい方法を見つけることができません。
誰かがこれを正しい方法でやるのを手伝ってくれたら、私は感謝しています。
注釈を覚えようとしているので、下垂体で穏やかにしてください。
クラス(DownloadsDialog)TextViewsが通過intiatedされている(がを@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");
}
}
..
}
返信のためのThx、Okので、MyServiceクラスで "@ViewById"と "@EBean"を削除する必要がありますか? DownloadsDialogでTextViewにアクセスするにはどうしたらいいですか?コードが編集されました。 – Simon
サービスでアラートダイアログを作成し、それをハンドラを使用して表示するか、ダイアログでフィールドを静的にしてダイアログオブジェクトをサービスに渡すことができます。静的参照を使用してtextviewオブジェクトを変更できます。 – androidnoobdev
Ok Thx、@ViewById(R.id.statusTxt)public static TextView mStatusTxt; Android Studioではこれがメモリリークを引き起こすと警告しています。 – Simon