微调器和新活动的启动活动不会启动另一个 - Android开发

时间:2012-12-09 02:23:45

标签: java android android-intent spinner manifest

我已经跟着其他一些问题拼凑起来得到这个:

    public class FbFPS extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.fbhtf);

        ArrayAdapter<CharSequence> adapter = ArrayAdapter
                .createFromResource(this, R.array.spagesarray,
                        android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

        Spinner s = (Spinner) findViewById(R.id.spages);

        s.setAdapter(adapter);

        s.setOnItemSelectedListener(new OnItemSelectedListener() {

            @Override
            public void onItemSelected(AdapterView<?> parent, View view,
                    int pos, long id) {
                // Display Selected option
                if (parent.getItemAtPosition(pos).toString()
                        .equals("Under 16s Reccommended Settings")) {
                    Intent i = new Intent(getApplicationContext(),
                            FbU16RS.class);
                    startActivity(i);
                    finish();
                }

            }

            @Override
            public void onNothingSelected(AdapterView<?> arg0) {

            }

        });

        s.setOnItemSelectedListener(new OnItemSelectedListener() {

            @Override
            public void onItemSelected(AdapterView<?> parent, View view,
                    int pos, long id) {
                // Display Selected option
                if (parent.getItemAtPosition(pos).toString()
                        .equals("Recommended Privacy Settings")) {
                    Intent i = new Intent(getApplicationContext(), FbRS.class);
                    startActivity(i);
                    finish();
                }
            }

            @Override
            public void onNothingSelected(AdapterView<?> arg0) {

            }

        });

    }
}

还有两个类似的活动,但他们指向剩下的两个活动。 基本上就是这样:

s.setOnItemSelectedListener(new OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> parent, View view,
                int pos, long id) {
            // Display Selected option
            if (parent.getItemAtPosition(pos).toString()
                    .equals("Recommended Privacy Settings")) {
                Intent i = new Intent(getApplicationContext(), FbRS.class);
                startActivity(i);
                finish();
            }
        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {

        }

    });

每次活动两次。清单中提到了它们,xmls是正确的。 它真的很奇怪虽然它打开了最后一个选项,但却打开另一个选项。当它开始时,它不会打开任何......

我哪里错了?我也对任何更简单的方式持开放态度。 :)在此先感谢。

修改

好的,我已经改变了所有3个活动,现在它似乎在我选择的任何内容上打开相同的活动。这是代码:

    public class FbRS extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.fbhtf);

        final Intent iFbHTF = new Intent(FbRS.this, FbHTF.class);
        final Intent iFbU16RS = new Intent(FbRS.this, FbU16RS.class);

        ArrayAdapter<CharSequence> adapter = ArrayAdapter
                .createFromResource(this, R.array.spagesarray,
                        android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

        Spinner s = (Spinner) findViewById(R.id.spages);

        s.setAdapter(adapter);

        s.setOnItemSelectedListener(new OnItemSelectedListener() {

            @Override
            public void onItemSelected(AdapterView<?> parent, View view,
                    int pos, long id) {
                if (parent.getItemAtPosition(pos).toString()
                        .equals("Finding Privacy Settings")) {
                    startActivity(iFbHTF);
                    finish();
                } else if (parent.getItemAtPosition(pos).toString()
                        .equals("Under 16s Recommended Privacy Settings")) {
                    startActivity(iFbU16RS);
                    finish();
                }

            }

            @Override
            public void onNothingSelected(AdapterView<?> arg0) {

            }

        });

    }
}

此处还有清单:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.timmo.isp"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="14"
        android:targetSdkVersion="17" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.timmo.isp.Home"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />


                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name="com.timmo.isp.FbHTF"
            android:label="@string/titleFbHTF"
            android:parentActivityName="com.timmo.isp.Home" >
        </activity>
        <activity
            android:name="com.timmo.isp.FbU16RS"
            android:label="@string/titleFbU16RS"
            android:parentActivityName="com.timmo.isp.Home" >
        </activity>
        <activity
            android:name="com.timmo.isp.FbRS"
            android:label="@string/titleFbRS"
            android:parentActivityName="com.timmo.isp.Home" >
        </activity>
        <activity
            android:name="com.timmo.isp.FYMNK"
            android:label="@string/titlefymnk"
            android:parentActivityName="com.timmo.isp.Home" >
        </activity>
    </application>

</manifest>

我认为它的到来希望能帮助AndroidPenguin和kongkea。

2 个答案:

答案 0 :(得分:0)

下面是您想要的代码,尽管可能只有一个太多或太少的括号。基本上只会有一个onitemselectedlistener被调用。所以把它们放在一个。

public class FbFPS extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fbhtf);

ArrayAdapter<CharSequence> adapter = ArrayAdapter
        .createFromResource(this, R.array.spagesarray,
                android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

Spinner s = (Spinner) findViewById(R.id.spages);

s.setAdapter(adapter);

s.setOnItemSelectedListener(new OnItemSelectedListener() {

    @Override
    public void onItemSelected(AdapterView<?> parent, View view,
            int pos, long id) {
        // Display Selected option
        if (parent.getItemAtPosition(pos).toString()
                .equals("Under 16s Reccommended Settings")) {
            Intent i = new Intent(getApplicationContext(),
                    FbU16RS.class);
            startActivity(i);
            finish();
        } else if (parent.getItemAtPosition(pos).toString()
                .equals("Recommended Privacy Settings")) {
            Intent i = new Intent(getApplicationContext(), FbRS.class);
            startActivity(i);
            finish();
        }

    }

    @Override
    public void onNothingSelected(AdapterView<?> arg0) {

    }

});

}
}

如果您愿意,还可以使用ID /位置编号以及开关和案例来清理代码。

答案 1 :(得分:0)

FBFPS活动

Intent i = new Intent(FBFPS.this, FbU16RS.class);

在上面的onClickListener上。像FBFPS活动那样做。设置活动的当前名称 Intent i = new Intent(your current activity name.this, FbRS.class);

在Manifest中,在应用程序标记中添加所有Activity类名称

<uses-sdk
    android:minSdkVersion="14"
    android:targetSdkVersion="15" />

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".ToDoListActivity" // Main activity
        android:label="@string/title_activity_main" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity 
        android:name=".your activity name">
    </activity>
    <activity 
        android:name=".your activity name>
    </activity>

</application>