Некорректная активность при запуске приложения Android Studio - PullRequest
0 голосов
/ 25 сентября 2018

Я начал создавать приложение в 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.Несмотря на то, что я установил для средства выбора значения min, max и default, средство выбора показывает только 0 и не будет прокручиваться.Похоже, что эти две проблемы как-то связаны, с точки зрения того, какое действие выполняется.

это код courseSelect:

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);
    }
    ...
}

Ответы [ 4 ]

0 голосов
/ 25 сентября 2018

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

setContentView(R.layout.activity_course_select);

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

setContentView(R.layout.yourMainPageLayout); 
0 голосов
/ 25 сентября 2018

Попробуйте и ошибка была в 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
0 голосов
/ 25 сентября 2018

отредактируйте 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 выглядела более организованно (меньше кода).

0 голосов
/ 25 сентября 2018

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

вы написали атрибут 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

...