私の問題は、データがデータベースに正常に挿入されましたが、登録時に共有優先権が機能しないため、スプラッシュスクリーンの開始時に発生するアプリケーションを破棄してしまいました。私の意向は、一度ログインしてアプリをもう一度終了した後、再びログインページを表示しないように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);
}
この 'else if(user.equals(mydb))'は決して真ではありません。実際にはSharedPreferenceにデータを保存することは決してありません。このコードで何をしようとしていますか? – ishmaelMakitla
実際、私は@ishmaelMalkitlaがそれについての解決策を教えてくれるのを知りません – AnilkumarJohn
これは冗談ですか?ユーザーは文字列です.mydbはデータベースオブジェクトです。もし、(user.equals(mydb))が意味を持たない場合 –