#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:
Взгляните на раздел Задачи и обратный стек. В нем довольно четко объясняются концепции навигации между действиями.