当 运行 App Android Studio 时 Activity 不正确
Incorrect Activity when running App Android Studio
我已经开始在 Android studio 中构建应用程序。我已将 MainPage
设置为 manifest.xml
中的启动器 activity。
<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>
我仔细检查了 运行 配置是否设置为 'Default',但该应用 运行 正在使用另一个 activity,名为 courseSelect
.它也没有 运行 在 NumberPicker
上正确地设置一些代码。尽管我已将选择器设置为具有最小值、最大值和默认值,但选择器仅显示 0 并且不会滚动。这两个问题似乎在某种程度上是相关的,就 activity 是什么而言 运行。
这是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
activity,它仍然在 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);
}
...
}
首先你的清单文件有误
你在开始标签外写了 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
试试这个,错误出现在第 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
编辑 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 样式):
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
Activity,但随后膨胀了错误的 XML 文件。
之前的一个 "suggested edit" 是交换 setContentView()
和下面段落的顺序......我已经拒绝了,因为将它设置在 Manifest.xml
中看起来更有条理(更少代码)。
您的启动器 activity 是 MainPage,但您在 MainPage activity 的 onCreate 方法
中调用 courselect activity 的布局
setContentView(R.layout.activity_course_select);
将其更改为您的 MainPage 布局
setContentView(R.layout.yourMainPageLayout);
我已经开始在 Android studio 中构建应用程序。我已将 MainPage
设置为 manifest.xml
中的启动器 activity。
<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>
我仔细检查了 运行 配置是否设置为 'Default',但该应用 运行 正在使用另一个 activity,名为 courseSelect
.它也没有 运行 在 NumberPicker
上正确地设置一些代码。尽管我已将选择器设置为具有最小值、最大值和默认值,但选择器仅显示 0 并且不会滚动。这两个问题似乎在某种程度上是相关的,就 activity 是什么而言 运行。
这是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
activity,它仍然在 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);
}
...
}
首先你的清单文件有误
你在开始标签外写了 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
试试这个,错误出现在第 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
编辑 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 样式):
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
Activity,但随后膨胀了错误的 XML 文件。
之前的一个 "suggested edit" 是交换 setContentView()
和下面段落的顺序......我已经拒绝了,因为将它设置在 Manifest.xml
中看起来更有条理(更少代码)。
您的启动器 activity 是 MainPage,但您在 MainPage activity 的 onCreate 方法
中调用 courselect activity 的布局setContentView(R.layout.activity_course_select);
将其更改为您的 MainPage 布局
setContentView(R.layout.yourMainPageLayout);