переключение действий

#android

#Android

Вопрос:

Уважаемые все; Я действительно запутался в вопросе макетов и действий, я использовался в приложениях Windows для форм и классов, но здесь это кажется немного непостоянным, поэтому я не знаю, когда я буду использовать и макет, и когда мне нужно переключить активность… в любом случае у меня есть образец приложения, и я решил, что для каждого действия должен быть свой макет. и я хочу переключаться между действиями. итак, я пишу код в AndroidManifest.XML

 <application android:icon="@drawable/icon" android:label="@string/app_name">
    <activity android:name=".activity"
              android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
         <intent-filter>
             <action android:name="android.content.intent.ActionBootCompleted" />
             <category android:name="android.content.intent.CategoryDefault" />
         </intent-filter>
    </activity>
     <activity android:name=".activity1"
              android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN2" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".home"
              android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN2" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

</application>
  

и затем в каждом OnClickListener :

 Button b1=(Button)findViewById(R.id.button1);
    b1.setOnClickListener(new View.OnClickListener() {
      public void onClick(View v) {
             //alert.show();
       //  setContentView(R.layout.menu);
         String packageName = activity1.class.getPackage().getName();

       String packageAndClassName = activity1.class.getName();
       Intent intent = new Intent().setClassName(packageName,packageAndClassName);
       startActivity(intent);

        }
        });
  

Итак, он переключается с activity на Home, но когда я хочу переключиться с home на actvity1, это возвращает меня обратно к activity…

Так в чем проблема???

Ответ №1:

Этот фрагмент должен лучше выполнять работу по запуску вашего activity1 . Вам нужно будет переименовать MyActivity в примере в имя класса activity, в котором размещен фрагмент (или предоставить альтернативную контекстную переменную).

       Intent intent = new Intent(MyActivity.this, activity1.class);
      startActivity(intent);
  

Ответ №2:

от AndroidManifest.Мы видим, что XML activity является вашей основной деятельностью, поэтому

 Intent intent = new Intent().setClassName(packageName,packageAndClassName);
  

переключится на acticity .

попробуйте использовать

 Intent intent = new Intent(HomeActivity.this, activity1.class);
  

Еще:

 public Intent (Context packageContext, Class<?> cls)
  

Создайте намерение для определенного компонента. Все остальные поля (действие, данные, тип, класс) имеют значение null, хотя позже они могут быть изменены с помощью явных вызовов. Это обеспечивает удобный способ создать намерение, предназначенное для выполнения жестко запрограммированного имени класса, вместо того, чтобы полагаться на систему в поиске подходящего класса для вас;
<a rel="noreferrer noopener nofollow" href="https:///developer.android.com/reference/android/content/Intent.html#Intent(android.content.Context, java.lang.Class)» rel=»nofollow»>ссылка

Ответ №3:

Взгляните на раздел Задачи и обратный стек. В нем довольно четко объясняются концепции навигации между действиями.