在Android中,如何访问清单文件中未定义的视图?

时间:2013-01-13 03:11:32

标签: android manifest findviewbyid

我的Android应用程序使用单个Activity创建一个未在清单中定义的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?

1 个答案:

答案 0 :(得分:0)

向任务添加构造函数。传递它需要在构造函数中访问的视图。将其保存到任务的类变量中。

如果您需要执行大量操作,请传入活动,并在活动上调用findViewById。只需记住在onPostExec结尾处取消活动,以避免泄露活动的风险。