2016-05-02 13 views
-1

私の問題は、データがデータベースに正常に挿入されましたが、登録時に共有優先権が機能しないため、スプラッシュスクリーンの開始時に発生するアプリケーションを破棄してしまいました。私の意向は、一度ログインしてアプリをもう一度終了した後、再びログインページを表示しないようにFacebookのアプリに似ています。私はそれを好きです。共有PrferncesとSqliteデータベースの問題

public class MainActivity extends Activity 
{ 

EditText et,et1,et2,et3,et4,et5; 

TextView tv; 
Button btn; 
static MyDatabase mydb; 
SQLiteDatabase db; 
public static final String Filename = "logindata"; 
public static final String key = "status"; 
SharedPreferences sp; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    tv = (TextView)findViewById(R.id.text); 
    btn = (Button)findViewById(R.id.submit); 
    et = (EditText) findViewById(R.id.first); 
    et1 = (EditText) findViewById(R.id.last); 
    et2 = (EditText) findViewById(R.id.email); 
    sp = getSharedPreferences(Filename,MODE_PRIVATE); 
    boolean res = sp.getBoolean(key,false); 
    if (res) 
    { 
     Intent i = new Intent(MainActivity.this,Result.class); 
     startActivity(i); 
     Toast.makeText(MainActivity.this, "sp created", Toast.LENGTH_SHORT).show(); 
    } 
    else 
    { 
     Toast.makeText(MainActivity.this, "temp", Toast.LENGTH_SHORT).show(); 
    } 
    mydb = new MyDatabase(this); 
    db = mydb.getWritableDatabase(); 
    ConnectivityManager connect = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo net = connect.getActiveNetworkInfo(); 
    if (net!=null&&net.isConnected()) 
    { 
     tv.setVisibility(View.INVISIBLE); 
    } 
    else 
    { 
     btn.setEnabled(false); 
    } 
} 
public void submitDetails(View v) { 
    String user = et.getText().toString(); 
    String pwd = et1.getText().toString(); 
    String email = et2.getText().toString(); 
String emailpatern = "^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@" 
      + "[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$"; 
    if (user.equals("")) { 
     et.setError("pls enter name"); 
    } else if (pwd.equals("")) { 
     et1.setError("pls enter last name"); 
    } else if (email.equals("")) { 
     et2.setError("Pls Enter Valid Email"); 
    } else if (!email.matches(emailpatern)) { 
     et2.setError("Pls Enter Valid email charcters"); 
    } 
    else if (user.equals()) 
    { 
     SharedPreferences.Editor ed = sp.edit(); 
     ed.putBoolean(key, true); 
     ed.commit(); 
     Intent i = new Intent(MainActivity.this,Result.class); 
     startActivity(i); 
    } 
    else { 
     Intent i = new Intent(MainActivity.this, Result.class); 
     i.putExtra("k1", user); 
     i.putExtra("k2", pwd); 
     i.putExtra("k3", email); 
     startActivity(i); 
    } 
    String qry = "insert into register values('"+user+"','"+pwd+"','"+email+"')"; 
    try 
    { 
    db.execSQL(qry); 
     Toast.makeText(MainActivity.this, "registered", Toast.LENGTH_SHORT).show(); 
    }catch (Exception e) 
    { 
     Log.e("TAG:InsertionException",""+e); 
    } 

Mydatbase活動

 public class MyDatabase extends SQLiteOpenHelper 
     { 
Context c; 
private static final String DBNAME = "anil"; 
private static final int VERSION = 1; 
public MyDatabase(Context c) 
{ 
    super(c,DBNAME,null,VERSION); 
} 
@Override 
public void onCreate(SQLiteDatabase db) { 

    try 
    { 
     String qry = "create table register(User TEXT,Password TEXT,Email TEXT)"; 
     db.execSQL(qry); 
     Toast.makeText(c,"created", Toast.LENGTH_SHORT).show(); 
    }catch(Exception e) 
    { 
     Log.e("TAG: Table Creation",""+e); 
    } 
} 

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 

} 

logcat

05-03 02:11:08.611 27068から27068 /? E/AndroidRuntime:致命的例外:メイン java.lang.RuntimeException:アクティビティを開始できませんComponentInfo {anilkumar.com.iwtweb/anilkumar.com.iwtweb.Result}:java.lang.NullPointerException android.app.ActivityThread.performLaunchActivity (ActivityThread.java:1956) android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981) (android.app.ActivityThread.access)$ 600(ActivityThread.java:123) android.app.ActivityThread $ H (android.os.Hostler.dispatchMessage(Handler.java:99) のハンドルメッセージ(ActivityThread.java:1147) android.os.ActivityThread.mainの (android.os.Looper.loop(Looper.java:137) ) ActivityThread.java:4424) java.lang.reflect.Method.invoke(Method.java:511)com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.runで でjava.lang.reflect.Method.invokeNative(ネイティブメソッド) (ZygoteInitで .java:anilkumarでjava.lang.NullPointerExceptionが :784)com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)dalvik.system.NativeStart.main(ネイティブメソッド) で に起因します.com.iwtweb.Result.onCreate(Result.java:28) とandroid.app.Activity.performCreate(Activity.java:4466) (android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)) でandroid 。 android.appでandroid.app.ActivityThread.access $ 600(ActivityThread.java:123) でandroid.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981) でapp.ActivityThread.performLaunchActivity(ActivityThread.java:1920) .ActivityThread $ H.handleMessage(ActivityThread.java:1147) とandroid.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) android.appにあります。 .ActivityThread.main(ActivityThread.java:4424) at java.lang.reflect.Method.invokeNative(ネイティブメソッド) at java.lang.reflect.Method.invoke(Method.java:511) at com.android。 internal.os.Zyg oteInit $ MethodAndArgsCaller.run(ZygoteInit.java:784) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) at dalvik.system.NativeStart.main(ネイティブメソッド) 05-03 02 :11:12.162 78-111 /? E/InputDispatcher:channel '41373368 anilkumar.com.iwtweb/anilkumar.com.iwtweb.SplashActivity(server)'〜チャンネルが回復不能に壊れて処分される!次のようにあなたのコードの残りの部分が動作すると仮定すると

結果の活動

 public class Result extends AppCompatActivity 


     { 



TextView tv,tv2,tv3,tv4,tv5,tv6; 
String user,pwd,email; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.result); 
    tv = (TextView)findViewById(R.id.textView); 
    tv2 = (TextView)findViewById(R.id.textView3); 
    tv3 = (TextView)findViewById(R.id.textView4); 

    Intent i = getIntent(); 
    Bundle b = i.getExtras(); 
    user = b.getString("k1"); 
    pwd =b.getString("k2"); 
    email = b.getString("k3"); 
//here is error  tv.setText(user); 
    tv2.setText(pwd); 
    tv3.setText(email); 

} 
+1

この 'else if(user.equals(mydb))'は決して真ではありません。実際にはSharedPreferenceにデータを保存することは決してありません。このコードで何をしようとしていますか? – ishmaelMakitla

+0

実際、私は@ishmaelMalkitlaがそれについての解決策を教えてくれるのを知りません – AnilkumarJohn

+1

これは冗談ですか?ユーザーは文字列です.mydbはデータベースオブジェクトです。もし、(user.equals(mydb))が意味を持たない場合 –

答えて

1

は、あなたのsubmitDetails方法を変更してください:

public void submitDetails(View v) { 
    String user = et.getText().toString(); 
    String pwd = et1.getText().toString(); 
    String email = et2.getText().toString(); 
    String emailpatern = "^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@" 
      + "[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$"; 
    if (user.equals("")) { 
     et.setError("pls enter name"); 
    } else if (pwd.equals("")) { 
     et1.setError("pls enter last name"); 
    } else if (email.equals("")) { 
     et2.setError("Pls Enter Valid Email"); 
    } else if (!email.matches(emailpatern)) { 
     et2.setError("Pls Enter Valid email charcters"); 
    } 
    else 
    { 
     //at this point you can try and insert the submitted values into the db 
     String qry = "insert into register values('"+user+"','"+pwd+"','"+email+"')"; 
    try 
    { 
     db.execSQL(qry); 
     Toast.makeText(MainActivity.this, "registered", Toast.LENGTH_SHORT).show(); 
     //the insert was successful - here you simply "cache" the details 
     SharedPreferences.Editor ed = sp.edit(); 
     ed.putBoolean(key, true); 
     ed.commit();  
     //then you continue to load the next Activity 
     Intent i = new Intent(MainActivity.this, Result.class); 
     i.putExtra("k1", user); 
     i.putExtra("k2", pwd); 
     i.putExtra("k3", email); 

     startActivity(i); 

    }catch (Exception e) 
    { 
     Log.e("TAG:InsertionException",""+e); 
     //there were some problems 
    } 

    }  
} 

これらの変更を試してみて、あなたの問題がある場合はお知らせください。解決される。

+0

エラーが発生しました。残念ながら、アプリを強制終了して再びエラーを表示すると@ishamelmakitilaエラーが表示されます – AnilkumarJohn

+0

stacktraceので、私たちはエラーを調べることができます。 – ishmaelMakitla

+0

logact @ishmaelについて上記を参照 – AnilkumarJohn

関連する問題