0

我已经开始在 Android Studio 中构建一个应用程序。我已经MainPagemanifest.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 并且不会滚动。就正在运行的活动而言,这两个问题似乎以某种方式相关。

这是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

4 回答 4

3

编辑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 );到适当的资源。

因为它启动了MainPageActivity,但随后膨胀了错误的 XML 文件。


之前的一个“建议编辑”是交换setContentView()以下段落的顺序......我拒绝了,因为设置它Manifest.xml看起来更有条理(更少的代码)。

于 2018-09-25T05:06:23.413 回答
1

首先你的manifest文件有错误

你在开始标签之外写了 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 来设置内容视图

于 2018-09-25T05:02:45.420 回答
1

试试这个,错误在第 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
于 2018-09-25T05:03:13.100 回答
1

您的启动器活动是 MainPage 但您在此行的 MainPage 活动的 onCreate 方法中调用 courseselect 活动的布局

setContentView(R.layout.activity_course_select);

将其更改为您的 MainPage 布局

setContentView(R.layout.yourMainPageLayout); 
于 2018-09-25T05:14:52.937 回答