簡體   English   中英

運行App Android Studio時活動不正確

[英]Incorrect Activity when running App Android Studio

我已經開始在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);
    }
    ...
}

編輯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設置似乎更有條理(代碼更少)。

首先,清單文件中有一個錯誤

您在開始標記之外編寫了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

您的啟動器活動是MainPage,但您正在此行上在MainPage活動的onCreate方法中調用Courseselect活動的布局

setContentView(R.layout.activity_course_select);

將其更改為您的MainPage布局

setContentView(R.layout.yourMainPageLayout); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM