【问题标题】:Incorrect Activity when running App Android Studio运行 App Android Studio 时 Activity 不正确
【发布时间】:2018-09-25 04:58:22
【问题描述】:

我已开始在 Android Studio 中构建应用。我已经在manifest.xml 中建立了MainPage 作为启动器活动。

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

【问题讨论】:

  • 在此处发布您的主页代码

标签: android android-studio android-activity android-manifest android-number-picker


【解决方案1】:

编辑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 Activity,但随后膨胀了错误的 XML 文件。


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

【讨论】:

    【解决方案2】:

    首先你的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 来设置内容视图

    【讨论】:

    • 我修复了代码错误,但对手头的问题没有任何影响。
    【解决方案3】:

    试试这个,错误在第 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 检查我编辑的这段代码,如果它可以帮助您投票并接受绿色勾号的答案,它将对其他人有所帮助谢谢...~!!!
    【解决方案4】:

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

    setContentView(R.layout.activity_course_select);
    

    将其更改为您的 MainPage 布局

    setContentView(R.layout.yourMainPageLayout); 
    

    【讨论】:

      猜你喜欢
      • 2021-06-05
      • 2021-12-29
      • 2016-08-17
      • 1970-01-01
      • 1970-01-01
      • 2021-06-10
      • 2021-09-08
      • 2021-12-15
      • 1970-01-01
      相关资源
      最近更新 更多