1

アプリケーションを実行すると、ログイン アクティビティは初回と次回に 1 回だけ発生し、ログイン アクティビティのボタン クリックに基づいて 2 つの異なるアクティビティを開く必要があります。ログイン アクティビティでは、次に開いたときに最初のラジオ ボタンを有効にすると、メイン 2 レイアウトが表示され、2 番目のラジオ ボタンを有効にすると、メイン 3 レイアウトが表示されます。

     public class Demo1 extends Activity {
        Button b1,b2;
        int count=0;
      public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);

      SharedPreferences settings = this.getSharedPreferences("MyApp",0);
      boolean firstrun=settings.getBoolean("firstrun",true);
      if (firstrun) {
        SharedPreferences.Editor e = settings.edit();
        e.putBoolean("firstrun",false);
        e.commit();


      setContentView(R.layout.main1);
      }
      else{
         test();
      }
      b1=(Button)findViewById(R.id.button1);
      b2=(Button)findViewById(R.id.button2);
     b1.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub
            count=1;
            Intent intent = new Intent(Demo1.this, ButtonActivate1.class);
              startActivity(intent);
        }
    });
     b2.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            count=2;
            // TODO Auto-generated method stub
            Intent intent = new Intent(Demo1.this, ButtonActivate1.class);
              startActivity(intent);
        }
    });




 }
private void test() {
    // TODO Auto-generated method stub
    if(count==1)
    {
        setContentView(R.layout.main2);
    }
    if(count==2)
    {
        setContentView(R.layout.main3);
    }
}

}

この例では、実行中に強制的に閉じられ、行 button.setonclicklistner.please にエラーが表示されます。この問題を解決する方法を教えてください。

4

1 に答える 1

2

私は私の答えを次のように更新しました。これでうまくいくはずです。

package com.demo1;

import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;

public class Demo1Activity extends Activity {
    private int count;
    private SharedPreferences settings;


    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        settings = this.getSharedPreferences("MyApp",0);
        count = settings.getInt("count", 0);

        selectContentView();
    }

    public void button1Method(View v) {
        setCount(1);
        Intent intent = new Intent(Demo1Activity.this, Demo2Activity.class);
        startActivity(intent);
    }

    public void button2Method(View v) {
        setCount(2);
        Intent intent = new Intent(Demo1Activity.this, Demo3Activity.class);
        startActivity(intent);
    }


    private void selectContentView() {
        // TODO Auto-generated method stub
        switch (count) {
        case 1:
            setContentView(R.layout.main2);
            break;
        case 2:
            setContentView(R.layout.main3);
            break;
        default:
            setContentView(R.layout.main1);
        }
    }

    private void setCount(int count) {
        SharedPreferences.Editor e = settings.edit();
        e.putInt("count",count);
        e.commit();
    }
}

main1.xmlファイル:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="main1" />

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/button1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="0.5"
            android:onClick="button1Method"
            android:text="button1" />

        <Button
            android:id="@+id/button2"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="0.5"
            android:onClick="button2Method"
            android:text="button2" />
    </LinearLayout>

</RelativeLayout>

XMLファイル内に設定するonClickリスナーを置き換えました。私はこれがよりきれいで簡単だと思います。

マニフェストファイル:

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

    <uses-sdk android:minSdkVersion="10" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name=".Demo1Activity"
            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=".Demo2Activity"
            android:label="@string/app_name" />
        <activity
            android:name=".Demo3Activity"
            android:label="@string/app_name" />
    </application>

</manifest>
于 2012-04-27T07:45:07.557 に答える