2014-02-07 4 views
0

Я пытаюсь получить необработанные данные Акселерометра и показать их в TextView.Доступ к компонентам деятельности из класса неактивности

У меня есть два класса: MainActivity и SensorActivity. Я новичок в разработке Android, и я сделал класс SensorActivity намеренно просто для того, чтобы узнать, как взаимодействуют классы неактивности и активности. Для этого я, узнав, узнал, что мне нужно передать контекст MainActivity, чтобы класс SensorActivity мог взаимодействовать с MainActivity. Итак, я старался, насколько мог, но, похоже, застрял.

В функции инициализации мое стремление получить доступ к TextView MainActivity не работает. Я даже не могу сделать правильный синтаксис. Ниже приведены фрагменты кода. Если бы я мог получить любую помощь, это было бы оценено, чрезвычайно.

В 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

Использование активности Context для доступа Вид из не класс, как активность:

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

потому что findViewById является метод из Класс активности вместо контекста

+0

Чтобы это сделать, должен ли я сделать экземпляр Activity из MainActivity.java и передать его, как sensorActivity (activity_instance)? – ElectroJunkie

+0

@ElectroJunkie: Нет, если вы хотите использовать контекст Activity в целом SensorActivity, то просто измените только на SensorActivity: «Контекст mainActivityContext;» на Activity mainActivityContext; и 'SensorActivity (контекст контекста)' to 'SensorActivity (контекст действия)' –

+0

В начальной функции у меня есть тост, который требует - я думаю, контекста. В этом случае, если я переключу контекст на активность, как мне это сделать? – ElectroJunkie

2

Используйте ссылку на действие вместо контекста, она будет работать.

Смежные вопросы