2013-09-06 6 views
0

Я просто столкнулся с этой проблемой при кодировании android. Если у меня есть нестатический метод (он должен быть нестационарным для работы внутри кода) в моем основном классе, как я должен называть его из другого класса, потому что, очевидно, я не могу создать другой экземпляр мой основной класс без запуска нового экземпляра программы?Как вызвать нестационарный метод из основного класса

public class MainActivity extends FragmentActivity { 
public static String starttime = ""; 
public static String startdate = ""; 
public static String endtime = ""; 
public static String enddate = ""; 
public static boolean start = false; 
} 

public void setDateText() { 
    EditText TextStart = (EditText)findViewById(R.id.txt_start); 
    TextStart.setText(startdate + " at " + starttime, TextView.BufferType.NORMAL); 
    EditText TextEnd = (EditText)findViewById(R.id.txt_end); 
    TextEnd.setText(enddate + " at " + endtime, TextView.BufferType.NORMAL); 
} 

Любая помощь о том, как вызвать setDateText() метод из другого класса?

Заранее спасибо

+0

Является 'setDateText' вне класса' MainActivity'? –

+0

- это ваш другой класс класса активности? – Raghunandan

+0

setDateText() должен быть в некотором классе ... предполагается, что он находится в MainActivity? –

ответ

0

Обычно вы не можете вызвать нон статический метод от статического типа, так что вы могли бы сделать:

MainActivity m = new MainActivity(); // No constructor needed in class def. 

m.setDateText(); 

Но, при запуске программы, вы не даете JVM ничего звонить на start, поэтому вам нужно добавить:

@Override 
//the function called when activity is created 
public void onCreate(Bundle savedInstanceState) { 
    //call the create fct. Of the base class 
    super.onCreate(savedInstanceState); 
    //load the layout specified in the layout.xml 
    setContentView(R.layout.main); 

    MainActivity m = new MainActivity(); 

    m.setDateText(); 
} 

Это будет вызываться, когда действие будет создано.

Для получения дополнительной информации перейдите на страницу Android - A beginner's guide.

Также смотрите ваш синтаксис, ваш метод def находится вне вашего класса def.

0

не зная, какой другой класс пытается получить доступ к экземпляру MainActivity, вам нужно будет передать ссылку данного экземпляра на другие объекты, вероятно, передавая this в конструктор или метод.

Например

public class MainActivity extends FragmentActivity { 
    public void someMethod() { 
     SomeClass someClass = new SomeClass(this); // pass this for callbacks 
     // ~ more 
    } 
} 

SomeClass где класс, где вам нужно вызвать setDateText метод MainActivity «s.

0

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

Если это так, то вы можете использовать startActivityForResult() для запуска 2-го действия, а затем передать информацию о дате обратно в MainActivity через onActivityResult(). Вы можете вызвать эту функцию в MainActivity.

0

Если вы должны вызвать setDate() на старте своей деятельности, вы можете передать дату в Intent при запуске деятельности и тянуть дату в onCreate методы MainActivity «s.

Если вам нужно вызвать setDate() в другое время, отличное от запуска, вы можете отправить широковещательную передачу от другой активности/компонента и сделать MainActivity прослушивать Broadcast и вытащить дату из данных намерения.

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