Как я могу начать новую активность Android с помощью строки?

Это работает в Bash и Korn, также может идти от более высоких к более низким числам. Наверное, не самый быстрый или красивый, но работает достаточно хорошо. Также обрабатывает негативы.

function num_range {
   # Return a range of whole numbers from beginning value to ending value.
   # >>> num_range start end
   # start: Whole number to start with.
   # end: Whole number to end with.
   typeset s e v
   s=${1}
   e=${2}
   if (( ${e} >= ${s} )); then
      v=${s}
      while (( ${v} <= ${e} )); do
         echo ${v}
         ((v=v+1))
      done
   elif (( ${e} < ${s} )); then
      v=${s}
      while (( ${v} >= ${e} )); do
         echo ${v}
         ((v=v-1))
      done
   fi
}

function test_num_range {
   num_range 1 3 | egrep "1|2|3" | assert_lc 3
   num_range 1 3 | head -1 | assert_eq 1
   num_range -1 1 | head -1 | assert_eq "-1"
   num_range 3 1 | egrep "1|2|3" | assert_lc 3
   num_range 3 1 | head -1 | assert_eq 3
   num_range 1 -1 | tail -1 | assert_eq "-1"
}
29
задан fahadayaz 22 April 2011 в 11:16
поделиться

4 ответа

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

String activityToStart = "com.example.MainActivity";
try {
    Class<?> c = Class.forName(activityToStart);
    Intent intent = new Intent(this, c);
    startActivity(intent);
} catch (ClassNotFoundException ignored) {
}

РЕДАКТИРОВАТЬ

Здесь имя класса будет полным именем класс с именем пакета. Например, если имя вашего пакета будет x.y.z, и если у вас будет Имя активности с именем A, то полное имя Действия A будет x.y.z.A.

64
ответ дан friederbluemle 22 April 2011 в 11:16
поделиться

Я не знаю решения, но у меня есть альтернатива ... способ похожий на div hide и show на веб-страницах.

Если ваш s1s1 загружен с низким содержанием, поместите их в линейное расположение и сохраните их видимость при загрузке формы s1. когда вы нажимаете на s1, чтобы достичь s1s1, скрываете s1 и устанавливаете параметры видимости на «видимый».

Делая это, вы можете избежать создания отдельного действия, и таким способом также легко перемещаться назад.

0
ответ дан Jana 22 April 2011 в 11:16
поделиться

Еще лучший способ (и тот, который используется в системе для запуска Browser.apk вместе с другими приложениями, не входящими в комплект AOSP):

Intent intent = new Intent();
intent.setClassName("com.android.browser","com.android.BrowserActivity");

context.startActivity(intent);

В качестве альтернативы, если вы хотите проверить что вы можете запустить Activity из командной строки, вы можете сделать что-то подобное из вашей оболочки:

adb shell
am start com.android.browser/.BrowserActivity
30
ответ дан Ehtesh Choudhury 22 April 2011 в 11:16
поделиться

Используйте Enums!

public enum SectionActivity {

  S1S1(MyS1Activity.class),
  S1S2(S2Activity.class);

  private Class<? extends Activity> activityClass;

  private SectionActivity(Class<? extends Activity> clazz) {

   this.activityClass = clazz;
  }

  public Class<? extends Activity> getActivity {
     return activityClass;
  }    
}

Тогда где-нибудь в вашем коде:

SectionActivity act = SectionActivity.valueOf(string);
Intent intent = new Intent(this, act.getActivity());
startActivity(intent);
-2
ответ дан Vladimir Ivanov 22 April 2011 в 11:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: