私のAndroidアプリは、マニフェストで定義されていない単一のSurfaceViewを作成する単一のアクティビティを使用しており、すべてのUI要素はカスタムです。現在、非同期HTTP呼び出しを行おうとしていますが、アプリケーションのどのクラスにもアクセスできません。非同期http呼び出しで見たすべての例は、次のようになります。
class RequestTask extends AsyncTask<String, String, String>{
@Override
protected String doInBackground(String... uri) {
// Code to make http call
return responseString;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
TextView txt = (TextView) findViewById(R.id.output);
// format the result and write it to the TextView object
}
}
この例では、RequestTaskはアプリケーションオブジェクトにアクセスできないため、findViewByIDを使用してそれらにアクセスします。マニフェストにビューが定義されていない場合、どうすればアプリケーションのオブジェクトにアクセスできますか?私のマニフェストにあるのはアクティビティだけです。
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.blah.blah.MyActivity"
android:label="@string/app_name" >
android:configChanges="keyboardHidden|orientation" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
私は単純さ/怠惰のためにこれを行いました、そしてそれは今のところうまくいきました。findViewByIdを使用せずにアプリケーション(アクティビティ、アプリケーションで定義されたビュー、またはインスタンス化した他のクラス)にアクセスする方法はありますか、それともマニフェストでSurfaceViewを定義する必要がありますか?