2012-04-27 59 views
1

当我运行的应用程序,登录活动应该只来一次第一次和下次,当我打开两个不同的活动应该来基于点击“登录活动”按钮。 在登录活动中,我保留了两个单选按钮,如果我下次启用第一个单选按钮时应该显示main2布局,如果我启用了第二个单选按钮,它应该显示main3布局。如何获得登录活动只有一次,当我跑第一次,下次不同活动应该

 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错误这个例子表明我如何来解决这个问题。

+0

什么错误? – 5hssba 2012-04-27 07:48:29

+0

空指针异常 – user1083266 2012-04-27 07:52:53

回答

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> 

我已经更换了的onClick监听到XML文件中的设置。我觉得这个整洁和容易。

清单文件:

<?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> 
+0

意味着我应该在按钮上点击,然后它第一次显示错误,并且它不是runnin – user1083266 2012-04-27 07:54:13

+0

代码中存在很多问题。 (i)当类正在初始化时,你正在定义'int count = 0;'因此,当应用程序重新启动时,你总是会得到count = 0。所以测试将永远不会工作。让我看看更多 – ASceresini 2012-04-27 08:03:08

+0

上面的例子工作。经过测试!不要忘记确保在清单文件中声明了第二个和第三个活动,如果您调用打开活动的意图并且尚未在清单文件中声明它们,则会引发异常。 – ASceresini 2012-04-27 08:46:57

相关问题