2014-08-05 4 views
0

Я хочу вызвать функцию, принадлежащую классу активности, и использовать ресурсы из другого класса.Вызов функции класса активности через другой класс

Как я могу это сделать? Я попытался сделать это, сделав object класса активности, но that doesn't work.

Так какой же другой способ я могу достичь этого?


Я прошел context (this) основного класса в другой класс через это. Но как мне его использовать?

protected void onCreate(final Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     getWindow().requestFeature(Window.FEATURE_ACTION_BAR); 
     getActionBar().hide(); 
     setContentView(R.layout.main_view); 

     mainAppContext = this; 
     Main mainObj=new Main(); 
     gMapObj.initiateMap(mainAppContext,mainObj, mapFrag); //Control shifted to other class. 

    } 
+0

Вы должны передать ссылку от этой деятельности к другому классу. Я не знаю, на чем основан ваш класс, но вы можете получить контекст или контекст приложения и достичь активности оттуда –

+0

Я уже сделал основной контекст активности, доступный в другом классе hwo, я его сейчас использую, вот чего я не знаю. – Maven

+0

Показать код с другой стороны. Как вы его передаете? –

ответ

0

Я не уверен, правильно ли я правильно понял ваш вопрос, но это моя рекомендация, насколько я понял.

Нельзя создавать объект. Вы хотите вызвать метод при создании экземпляра. Когда вы создаете объект, вы потеряете все свое соединение с активностью.

Вы можете сделать свой метод static, а затем называть его.

Если активность MainActivity, создать public static void someMethod() в этой деятельности и вызывать его из другого класса, как этот MainActivity.someMethod()

Если вы можете передать ссылку сделать это вместо того, передать свой контекст в качестве параметра.

EDIT

Это, как вы должны делать:

public class SecondClass extends Activity { 
    protected Context context; 

    public SecondClass(Context context){ 
     this.context = context; 
    } 

    protected void onCreate(final Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     getWindow().requestFeature(Window.FEATURE_ACTION_BAR); 
     getActionBar().hide(); 
     setContentView(R.layout.main_view); 

     context.initiateMap(mainAppContext,mainObj, mapFrag); 

    } 

} 

В вашей деятельности это сделать

new SecondClass(this); 
+0

мой класс «MainActivity» - это активность, а «SecondClass» - просто класс. Когда в функции 'initiateMap' я пытаюсь сделать это' this = mainAppContext', я получаю сообщение об ошибке: 'Левая часть задания должна быть переменной'. – Maven

+0

Потому что вы не можете сделать 'this = mainAppContext'. 'this' не является переменной. Посмотрите на код, который я разместил, и мне нравится. В моем коде я помещаю 'this.context = context;' и я объявил 'context' сверху. –

+0

Как я могу вызвать функцию с переменной контекста? это не экземпляр класса? это контекст? Плюс, как я сказал выше, моя ситуация - это наоборот. мой класс MainActivity - это активность, а SecondClass - просто класс. «initiateMap» map funtion находится в seconClass, но вызывается из MainActivity. – Maven

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