Неправильная активность при запуске приложения Android Studio

Я начал создавать приложение в студии Android. Я установил MainPage как средство запуска в manifest.xml.

<application
    android:allowBackup = "true"
    android:icon = "@mipmap/ic_launcher"
    android:label = "@string/app_name"
    android:roundIcon = "@mipmap/ic_launcher_round"
    android:supportsRtl = "true"
    android:theme = "@style/Theme.AppCompat.NoActionBar">

    <activity android:name = ".MainPage">
        android:screenOrientation = "portrait"
        <intent-filter>
            <action android:name = "android.intent.action.MAIN" />
            <category android:name = "android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity android:name = ".courseSelect" />
    <activity android:name = ".profile1" />
    <activity android:name = ".stats1" />
    <activity android:name = ".ReviewRounds" />
    <activity android:name = ".ReferFriends" />
    <activity android:name = ".RangeMode" />
</application>

Я дважды проверил, что для конфигурации запуска установлено значение «По умолчанию», но при этом приложение выполняет другое действие под названием courseSelect. Также некорректно работает некоторый код на NumberPicker. Несмотря на то, что я установил для средства выбора минимальное, максимальное значение и значение по умолчанию, средство выбора показывает только 0 и не будет прокручиваться. Кажется, что эти две проблемы как-то связаны с точки зрения выполняемой деятельности.

это courseSelectCode:

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.NumberPicker;
import co.ceryle.segmentedbutton.SegmentedButtonGroup;

public class courseSelect extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_course_select);

        //Hole Picker
        NumberPicker holePicker = (NumberPicker)findViewById(R.id.holePicker);
        holePicker.setMaxValue(18);
        holePicker.setMinValue(1);
        holePicker.setWrapSelectorWheel(false);
        holePicker.setValue(1);

        SegmentedButtonGroup sbg = (SegmentedButtonGroup) findViewById(R.id.segmentedButtonGroup);
        sbg.setOnClickedButtonPosition(new SegmentedButtonGroup.OnClickedButtonPosition() {
            @Override
            public void onClickedButtonPosition(int position) {
                // if (position == 0)
            }
        });
    }
}

Я попытался установить конфигурацию запуска специально для активности MainPage, но она по-прежнему открывается на странице courseSelect.

Обновлено: по запросу вот мой код MainPage.java:

public class MainPage extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_course_select);

        Window g = getWindow();
        g.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION, WindowManager.LayoutParams.TYPE_STATUS_BAR);
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    }
    ...
}

разместите здесь код своей главной страницы

Vinesh Chauhan 25.09.2018 07:01
0
1
116
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Прежде всего, в вашем файле манифеста есть ошибка

вы написали атрибут screenOrientation за пределами открывающего тега

 <activity android:name = ".MainPage">
        android:screenOrientation = "portrait"
        <intent-filter>
            <action android:name = "android.intent.action.MAIN" />
            <category android:name = "android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

должен быть

<activity 
        android:name = ".MainPage"
        android:screenOrientation = "portrait">
        <intent-filter>
            <action android:name = "android.intent.action.MAIN" />
            <category android:name = "android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

и вы использовали неправильный xml для setContenView

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

matador0227 25.09.2018 07:07

Попробуйте это, и ошибка была в 9-й строке, потому что ваша строка кода находится за пределами тега:

    <activity android:name = ".MainPage">
       android:screenOrientation = "portrait"  // error 

Сделай это :

    <activity android:name = ".MainPage"
       android:screenOrientation = "portrait">  // After doing this no error

а также сделайте вот что:

  public class MainPage extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_course_select); // error

сделай это :

public class MainPage extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.MAIN_PAGE_ACTIVITY_NAME); // no error

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

matador0227 25.09.2018 07:07

@ matador0227 проверьте этот код, который я редактировал, если он поможет вам проголосовать и принять ответ с помощью зеленой галочки, это поможет другим Спасибо ... ~ !!!

Abhinav Gupta 25.09.2018 07:14
Ответ принят как подходящий

отредактируйте Mainfest.xml, чтобы усилить портретную ориентацию:

<activity android:name = ".MainPage"
    android:screenOrientation = "portrait"
    android:configChanges = "orientation|keyboardHidden">
    <intent-filter>
        <action android:name = "android.intent.action.MAIN" />
        <category android:name = "android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

... что делает этот код просто бесполезным (styles.xml также можно использовать для стилей окон):

Window g = getWindow();
g.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION, WindowManager.LayoutParams.TYPE_STATUS_BAR);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

также обновите setContentView( R.layout.activity_course_select ); до соответствующего ресурса.

потому что он запускает действие MainPage, но затем раздувает неправильный XML-файл.


одно «предложенное редактирование» раньше заключалось в том, чтобы поменять местами setContentView() и абзац ниже ... который я отклонил, потому что установка его в Manifest.xml выглядела более организованной (меньше кода).

Активность вашей пусковой установки - MainPage, но вы вызываете макет действия courseselect внутри метода onCreate активности MainPage в этой строке

setContentView(R.layout.activity_course_select);

Измените его на свой макет MainPage

setContentView(R.layout.yourMainPageLayout); 

Другие вопросы по теме