Wir entwickeln eine Android-Anwendung. Auf einer der Seiten haben wir 15 Kippschalter. Wenn der Benutzer den Schalter umschaltet (auf EIN), werden die booleschen Werte in gemeinsamen Voreinstellungen gespeichert. Wenn der Benutzer die Seite nach der Anmeldung erneut besucht, werden die Kippschalter entsprechend seiner vorherigen Auswahl angezeigt. Jetzt möchten wir die Anzahl der Schalter, die auf ON geschaltet werden können, auf 9 beschränken. Ihre Hilfe ist in dieser Hinsicht am bemerkenswertesten.Beschränkung der Anzahl der Schalter, die in Android ausgewählt werden können
Hier Ich stelle den Beispielcode
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
public class favorites extends ActionBarActivity implements CompoundButton.OnCheckedChangeListener {
int c = 0;
String accdet;
String SessionID;
String favacctno,DATOFBIRTH;
Boolean isInternetPresent = false;
ConnectionDetector cd;
private ProgressDialog progressDialog;
CountDownTimer countDownTimer;
Logout lg;
String LastLogin;
String uname3;
String Custid;
String acountno;
String acctdet;
Switch tg,tg1,tg2,tg3,tg4,tg5,tg6,tg7,tg8,tg9,tga,tgb,tgc,tgd,tge,tgch;
private TextView switchStatus;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.favorites);
final SharedPreferences sp = PreferenceManager
.getDefaultSharedPreferences(this);
tg.setOnCheckedChangeListener(this);
tg1.setOnCheckedChangeListener(this);
tg2.setOnCheckedChangeListener(this);
tg3.setOnCheckedChangeListener(this);
tg4.setOnCheckedChangeListener(this);
tg5.setOnCheckedChangeListener(this);
tg6.setOnCheckedChangeListener(this);
tg7.setOnCheckedChangeListener(this);
tg8.setOnCheckedChangeListener(this);
tg9.setOnCheckedChangeListener(this);
tga.setOnCheckedChangeListener(this);
tgb.setOnCheckedChangeListener(this);
tgc.setOnCheckedChangeListener(this);
tgd.setOnCheckedChangeListener(this);
tge.setOnCheckedChangeListener(this);
tgch.setOnCheckedChangeListener(this);
countDownTimer= new CountDownTimer(5*60000, 1000) {
public void onTick(long millisUntilFinished) {
// TextView tv10 = (TextView)findViewById(R.id.textView10);
// tv10.setText("" + millisUntilFinished/1000);
}
public void onFinish() {
SessionID="L";
Editor edit = sp.edit();
edit.putString("SessionID", SessionID);
edit.commit();
Intent intent = new Intent(getApplicationContext(),Auth.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
// intent.putExtra("EXIT", true);
intent.putExtra("Exp", "Expired");
startActivity(intent);
countDownTimer.cancel();
//showAlertDialog(AcctDetails.this, "Error","Session Expired.Kindly login once again.", false);
// finish() ;// finish ActivityB
}
}.start();
try{
String uname = sp.getString("UserName", "User");
SessionID=sp.getString("SessionID","SessionID");
favacctno=sp.getString("favacctno", "favacctno");
DATOFBIRTH=sp.getString("DATOFBIRTH", "DATOFBIRTH");
LastLogin = sp.getString("LastLogin", "LastLogin");
String usname = "Welcome " + uname;
TextView DispUName = (TextView) findViewById(R.id.textView9);
DispUName.setText(usname);
final String uname3=uname +"||"+SessionID+"||"+"No"+"||"+favacctno+"||"+DATOFBIRTH+"||"+LastLogin;
Custid = getIntent().getStringExtra("Custid");
}
catch
{
Toast.makeText(getBaseContext(),"Exception Occured.Kindly try again.",Toast.LENGTH_SHORT).show();
System.out.println(e);
}
}
final SharedPreferences sp = PreferenceManager
.getDefaultSharedPreferences(this);
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// TODO Auto-generated method stub
if (isChecked)
{
c++;
}else
{
c--;
}
if (c<=9)
{
if (buttonView.getId()==R.id.accdet_Switch1)
{
SharedPreferences.Editor editor = sp.edit();
editor.putBoolean("chqbkreq", true);
editor.commit();
}
else if (buttonView.getId()==R.id.acctsumm_Switch)
{
SharedPreferences.Editor editor = sp.edit();
editor.putBoolean("accsumm", true);
editor.commit();
}
else if (buttonView.getId()==R.id.accstmt_Switch)
{
SharedPreferences.Editor editor = sp.edit();
editor.putBoolean("accstmt", true);
editor.commit();
}
else if (buttonView.getId()==R.id.CRL_Switch)
{
SharedPreferences.Editor editor = sp.edit();
editor.putBoolean("CRL", true);
editor.commit();
}
else if (buttonView.getId()==R.id.CSE_Switch)
{
SharedPreferences.Editor editor = sp.edit();
editor.putBoolean("CSE", true);
editor.commit();
}
else if (buttonView.getId()==R.id.inwchq_Switch)
{
SharedPreferences.Editor editor = sp.edit();
editor.putBoolean("inwchq", true);
editor.commit();
}
else if (buttonView.getId()==R.id.Unclramt_Switch)
{
SharedPreferences.Editor editor = sp.edit();
editor.putBoolean("unclramt", true);
editor.commit();
}
else if (buttonView.getId()==R.id.depdet_Switch)
{
SharedPreferences.Editor editor = sp.edit();
editor.putBoolean("depdet", true);
editor.commit();
}
else if (buttonView.getId()==R.id.depsumm_Switch)
{
SharedPreferences.Editor editor = sp.edit();
editor.putBoolean("depsumm", true);
editor.commit();
}
else if (buttonView.getId()==R.id.depstmt_Switch)
{
SharedPreferences.Editor editor = sp.edit();
editor.putBoolean("depstmt", true);
editor.commit();
}
else if (buttonView.getId()==R.id.loandet_Switch)
{
SharedPreferences.Editor editor = sp.edit();
editor.putBoolean("loandet", true);
editor.commit();
}
else if (buttonView.getId()==R.id.loansumm_Switch)
{
SharedPreferences.Editor editor = sp.edit();
editor.putBoolean("loansumm", true);
editor.commit();
}
else if (buttonView.getId()==R.id.loanstmt_Switch)
{
SharedPreferences.Editor editor = sp.edit();
editor.putBoolean("loanstmt", true);
editor.commit();
}
else if (buttonView.getId()==R.id.AM_Switch)
{
SharedPreferences.Editor editor = sp.edit();
editor.putBoolean("AM", true);
editor.commit();
}
else if (buttonView.getId()==R.id.forex_Switch)
{
SharedPreferences.Editor editor = sp.edit();
editor.putBoolean("forex", true);
editor.commit();
}
else if (buttonView.getId()==R.id.chqbreq_Switch)
{
SharedPreferences.Editor editor = sp.edit();
editor.putBoolean("chqbkreq", true);
editor.commit();
}
Toast.makeText(favorites.this, "Success", Toast.LENGTH_SHORT).show();
}else
{
c--;
buttonView.setChecked(false);
Toast.makeText(favorites.this, "Only 9 Options can be selected.", Toast.LENGTH_SHORT).show();
}
}
}
App bekommen Absturz
05-12 16:23:42.362: W/dalvikvm(706): threadid=1: thread exiting with uncaught exception (group=0x409961f8)
05-12 16:23:42.392: E/AndroidRuntime(706): FATAL EXCEPTION: main
05-12 16:23:42.392: E/AndroidRuntime(706): java.lang.RuntimeException: Unable to start activity ComponentInfo{kvbank.kvb_ebook/kvbank.kvb_epassbook.favorites}: java.lang.NullPointerException
05-12 16:23:42.392: E/AndroidRuntime(706): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1955)
05-12 16:23:42.392: E/AndroidRuntime(706): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980)
05-12 16:23:42.392: E/AndroidRuntime(706): at android.app.ActivityThread.access$600(ActivityThread.java:122)
05-12 16:23:42.392: E/AndroidRuntime(706): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146)
05-12 16:23:42.392: E/AndroidRuntime(706): at android.os.Handler.dispatchMessage(Handler.java:99)
05-12 16:23:42.392: E/AndroidRuntime(706): at android.os.Looper.loop(Looper.java:137)
05-12 16:23:42.392: E/AndroidRuntime(706): at android.app.ActivityThread.main(ActivityThread.java:4340)
05-12 16:23:42.392: E/AndroidRuntime(706): at java.lang.reflect.Method.invokeNative(Native Method)
05-12 16:23:42.392: E/AndroidRuntime(706): at java.lang.reflect.Method.invoke(Method.java:511)
05-12 16:23:42.392: E/AndroidRuntime(706): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
05-12 16:23:42.392: E/AndroidRuntime(706): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
05-12 16:23:42.392: E/AndroidRuntime(706): at dalvik.system.NativeStart.main(Native Method)
05-12 16:23:42.392: E/AndroidRuntime(706): Caused by: java.lang.NullPointerException
05-12 16:23:42.392: E/AndroidRuntime(706): at kvbank.kvb_epassbook.favorites.onCreate(favorites.java:111)
05-12 16:23:42.392: E/AndroidRuntime(706): at android.app.Activity.performCreate(Activity.java:4465)
05-12 16:23:42.392: E/AndroidRuntime(706): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
05-12 16:23:42.392: E/AndroidRuntime(706): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919)
and 11 more........................
Sie müssen um genauer sein über das, was Sie wollen. Was passiert, wenn auf einen zehnten Schalter geklickt wird? Sollte einer der anderen ausgeschaltet sein? Soll der zehnte sofort wieder auf ausschalten? Sollte es überhaupt nicht wechseln? –
Sie könnten eine switchedOnCount-Methode hinzufügen, die die Anzahl der Schalter zurückgibt, die eingeschaltet sind, und diese dann im 'onCheckedChangedListener' entlang der Linien von 'if (isChecked & (switchedOnCount() <9)) ... verwenden switchedOnCount' könnte abwechselnd wahr oder falsch zurückgeben. – MikeT
Tut mir leid, Mike. Wenn der zehnte Schalter eingeschaltet ist, muss die Nachricht kommen, dass nur neun Schalter ausgewählt werden können, und der zehnte Schalter sollte wieder auf aus schalten. Könnte ich einen Beispielcode haben mit switchedOnCount –