从视图中修改视图

时间:2012-09-19 22:14:04

标签: android android-activity android-view

我有两节课。第一个是包含通常布局的Activity。第二个是基于线程的SurfaceView类。我的问题与本主题完全相同,但使用Thread而不是AsyncTask:

Android/Java: Change view from another class?

当线程导致某些事件时,我希望能够更新Activity中的其他视图,但我似乎找不到从SurfaceView中正确访问这些视图的方法。

public class MyActivity extends Activity{

    Button myButton = (Button)findViewById(R.id.my_button);
    ...
}

public class MySurfaceView extends SurfaceView implements Runnable{

    // Need code here that can access myButton to call myButton.setText("Some Text")
}

大多数建议都是这样的:

((Button)findViewById(R.id.my_button)).setText("My Text");

my_button最初是在Activity的onCreate()中设置的。但是,从SurfaceView中调用时,这总是会导致空指针。进一步的推理会告诉我,我想访问应用程序上下文以找到View的方式,但这似乎为可怕的上下文内存泄漏敞开了大门。

这似乎在Android程序中应该相当常见,但我似乎无法找到一种正确的方法。

1 个答案:

答案 0 :(得分:0)

您是否尝试从SurfaceView实现一个侦听器,该侦听器在活动上广播事件和setListener。点击此处了解如何实施http://tseng-blog.nge-web.net/blog/2009/02/17/how-implement-your-own-listener-android-java/