我已经开始在Android Studio中构建应用。我已经将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,并且不会滚动。就正在运行的活动而言,这两个问题似乎有某种联系。
这是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);
}
...
}
答案 0 :(得分: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 );
更新为适当的资源。
因为它启动了MainPage
活动,但随后又膨胀了错误的XML文件。
之前的一个“建议编辑”是交换setContentView()
和下面的段落的顺序...我拒绝了,因为在Manifest.xml
中进行设置显得更有条理(代码更少)。
答案 1 :(得分:1)
首先您的清单文件有误
您在开始标记之外编写了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
答案 2 :(得分: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
答案 3 :(得分:1)
您的启动器活动是MainPage,但是您在此行上在MainPage活动的onCreate方法中调用了Courseselect活动的布局
setContentView(R.layout.activity_course_select);
将其更改为您的MainPage布局
setContentView(R.layout.yourMainPageLayout);