java - 从非 Activity 类访问 Activity 组件

标签 java android android-context

我正在尝试获取加速度计的原始数据并将其显示在 TextView 上。

我有两个类:MainActivity 和 SensorActivity。我是 Android 开发新手,我故意创建 SensorActivity 类只是为了了解非 Activity 类和 Activity 类如何交互。为此,我通过搜索了解到,我需要传递 MainActivity 的 Context,以便 SensorActivity 类可以与 MainActivity 进行交互。所以,我尽我所能,但我似乎陷入困境。

在初始化函数中,我访问 MainActivity 的 TextView 的努力似乎不起作用。我什至无法制定正确的语法。下面提供了代码 fragment 。如果我能得到任何帮助,我将不胜感激。

在MainActivity.java中

public class MainActivity extends Activity{

    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        SensorActivity sensorActivity = new SensorActivity(this);
        sensorActivity.initialize();
    }
}

在SensorActivity.java中

public class SensorActivity implements SensorEventListener{

    Context mainActivityContext;
    private SensorManager mySensorManager = (SensorManager) mainActivityContext.getSystemService(Context.SENSOR_SERVICE);

    public SensorActivity (Context context){
        this.mainActivityContext = context;
    }
    ...
    protected void initialize(){
        ...
        TextView tv = (TextView) findViewById(R.id.default_text_view);
        ...
    }
}

最佳答案

使用 Activity Context 从非 Activity 类访问 View ,如下所示:

protected void initialize(Activity activity){
    ...
    TextView tv = (TextView)activity.findViewById(R.id.default_text_view);
    ...
}

因为findViewById是来自Activity类的方法而不是Context

关于java - 从非 Activity 类访问 Activity 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21620532/

相关文章:

Android Nexus 5.0 崩溃致命信号 11 (SIGSEGV),代码 1 0x999e000c

Android 测试项目 - 读取 Assets 文件来测试纯 java 对象

android - 如何停止定时器 Android

java - 我无法弄清楚二叉树的插入方法中的逻辑问题

java - 如何从生成的 Java 类文件中删除未使用的常量

java - Collectors.toMap() keyMapper——更简洁的表达方式?

Java:增加Edittextfield的大小

android - Facebook sdk key 哈希太短

android - 如何在 Android kotlin 上的 fragment 中初始化上下文

java - 静态上下文保存在 Application 类中并在单例 Toast 构建器中使用,这是否会造成内存泄漏?