从非活动类访问活动组件

时间:2014-02-07 06:09:28

标签: java android android-context

我正在尝试获取Accelerometer的原始数据并在TextView上显示它。

我有两个类:MainActivity和SensorActivity。我是Android开发的新手,我故意制作了SensorActivity类,以了解非活动类和活动类的交互方式。为此,我通过搜索了解到我需要传递MainActivity的Context,以便SensorActivity类可以与MainActivity交互。所以,我尽我所能,但我似乎陷入困境。

在初始化函数中,我尝试访问MainActivity的TextView似乎不起作用。我甚至无法做出正确的语法。代码片段如下所示。如果我能得到任何帮助,我将非常感激。

在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);
        ...
    }
}

2 个答案:

答案 0 :(得分:3)

使用Activity Context从非Activity类访问View:

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

因为findViewById是Activity类而不是Context

的方法

答案 1 :(得分:2)

使用活动参考代替上下文它将起作用。