2012-02-29 115 views
0

因此,我的应用程序从文本视图中读取数据,然后将其保存到文件中。无论如何,当我按提交按钮它崩溃。我不知道,为什么,我试图删除粗略的代码,但那也不起作用。无论如何,如果你可以看看我的代码,看看我做错了什么,那会很棒。如果有人知道如何复制LogCat,那会非常酷。点击按钮时应用程序崩溃

我的代码:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.login); 
    send = (Button) findViewById(R.id.bLogIn); 
    user = (EditText) findViewById(R.id.eTuser); 
    pass = (EditText) findViewById(R.id.eTpassword); 
    staySignedIn = (CheckBox) findViewById(R.id.Cbstay); 
    send.setOnClickListener(this); 
    try { 
     Fos = openFileOutput(FILENAME, Context.MODE_PRIVATE); 
     Fos.close(); 
    } catch (FileNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

    if (staySignedIn.isChecked()) { 

     String u = user.getText().toString(); 
     String p = pass.getText().toString(); 
     File f = new File(FILENAME); 
     try { 
      Fos = new FileOutputStream(f); 
      //Write some Data 
      Fos.close(); 
     } catch (FileNotFoundException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 


    } 

} 

public void onClick(View v) { 
    // TODO Auto-generated method stub 
    switch (v.getId()) { 
    case R.id.bLogIn: 
     if (pass.length() == 0) 
      Toast.makeText(this, 
        "Try to type in your username and password again!", 
        Toast.LENGTH_LONG).show(); 
     else if (user.length() == 0) 
      Toast.makeText(this, 
        "Try to type in your username and password again!", 
        Toast.LENGTH_LONG).show(); 
     else { 

      String u = user.getText().toString(); 
      String p = pass.getText().toString(); 
      Bundle send = new Bundle(); 
      send.putString("key", u); 
      send.putString("key", p); 
      Intent a = new Intent(LogIn.this, logincheck.class); 
      startActivity(a); 
      Toast.makeText(this, "Were signing you in!", Toast.LENGTH_LONG) 
        .show(); 
      break; 
     } 
    } 

} 

}

的logcat的:

01-19 07:02:42.341: W/System.err(3074): java.io.FileNotFoundException: /userandpass (Read-only file system) 
    01-19 07:02:42.341: W/System.err(3074):   at org.apache.harmony.luni.platform.OSFileSystem.openImpl(Native Method) 
    01-19 07:02:42.341: W/System.err(3074):   at org.apache.harmony.luni.platform.OSFileSystem.open(OSFileSystem.java:152) 
    01-19 07:02:42.341: W/System.err(3074):   at java.io.FileOutputStream.<init>(FileOutputStream.java:97) 
    01-19 07:02:42.341: W/System.err(3074):   at java.io.FileOutputStream.<init>(FileOutputStream.java:69) 
    01-19 07:02:42.341: W/System.err(3074):   at com.gta5news.bananaphone.LogIn.onCreate(LogIn.java:59) 
    01-19 07:02:42.341: W/System.err(3074):   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
01-19 07:02:42.341: W/System.err(3074):   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 
01-19 07:02:42.341: W/System.err(3074):   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 
01-19 07:02:42.341: W/System.err(3074):   at android.app.ActivityThread.access$2300(ActivityThread.java:125) 
01-19 07:02:42.351: W/System.err(3074):   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 
01-19 07:02:42.351: W/System.err(3074):   at android.os.Handler.dispatchMessage(Handler.java:99) 
01-19 07:02:42.351: W/System.err(3074):   at android.os.Looper.loop(Looper.java:123) 
01-19 07:02:42.351: W/System.err(3074):   at android.app.ActivityThread.main(ActivityThread.java:4627) 
01-19 07:02:42.351: W/System.err(3074):   at java.lang.reflect.Method.invokeNative(Native Method) 
01-19 07:02:42.351: W/System.err(3074):   at java.lang.reflect.Method.invoke(Method.java:521) 
01-19 07:02:42.351: W/System.err(3074):   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
01-19 07:02:42.351: W/System.err(3074):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
01-19 07:02:42.351: W/System.err(3074):   at dalvik.system.NativeStart.main(Native Method) 
01-19 07:02:47.371: W/KeyCharacterMap(3074): No keyboard for id 0 
01-19 07:02:47.371: W/KeyCharacterMap(3074): Using default keymap: /system/usr/keychars/qwerty.kcm.bin 
01-19 07:02:49.421: D/AndroidRuntime(3074): Shutting down VM 
01-19 07:02:49.421: W/dalvikvm(3074): threadid=1: thread exiting with uncaught exception (group=0x4001d800) 
01-19 07:02:49.421: E/AndroidRuntime(3074): FATAL EXCEPTION: main 
01-19 07:02:49.421: E/AndroidRuntime(3074): android.content.ActivityNotFoundException: Unable to find explicit activity class {com.gta5news.bananaphone/com.gta5news.bananaphone.logincheck}; have you declared this activity in your AndroidManifest.xml? 
01-19 07:02:49.421: E/AndroidRuntime(3074):  at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1404) 
01-19 07:02:49.421: E/AndroidRuntime(3074):  at android.app.Instrumentation.execStartActivity(Instrumentation.java:1378) 
01-19 07:02:49.421: E/AndroidRuntime(3074):  at android.app.Activity.startActivityForResult(Activity.java:2817) 
01-19 07:02:49.421: E/AndroidRuntime(3074):  at android.app.Activity.startActivity(Activity.java:2923) 
01-19 07:02:49.421: E/AndroidRuntime(3074):  at com.gta5news.bananaphone.LogIn.onClick(LogIn.java:95) 
01-19 07:02:49.421: E/AndroidRuntime(3074):  at android.view.View.performClick(View.java:2408) 
01-19 07:02:49.421: E/AndroidRuntime(3074):  at android.view.View$PerformClick.run(View.java:8816) 
01-19 07:02:49.421: E/AndroidRuntime(3074):  at android.os.Handler.handleCallback(Handler.java:587) 
01-19 07:02:49.421: E/AndroidRuntime(3074):  at android.os.Handler.dispatchMessage(Handler.java:92) 
01-19 07:02:49.421: E/AndroidRuntime(3074):  at android.os.Looper.loop(Looper.java:123) 
01-19 07:02:49.421: E/AndroidRuntime(3074):  at android.app.ActivityThread.main(ActivityThread.java:4627) 
01-19 07:02:49.421: E/AndroidRuntime(3074):  at java.lang.reflect.Method.invokeNative(Native Method) 
01-19 07:02:49.421: E/AndroidRuntime(3074):  at java.lang.reflect.Method.invoke(Method.java:521) 
01-19 07:02:49.421: E/AndroidRuntime(3074):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
01-19 07:02:49.421: E/AndroidRuntime(3074):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
01-19 07:02:49.421: E/AndroidRuntime(3074):  at dalvik.system.NativeStart.main(Native Method) 
+0

后从logcat的堆栈跟踪。 – FoamyGuy 2012-02-29 17:28:57

+0

你能告诉我们logcat的例外情况吗? – 2012-02-29 17:29:15

+0

我不知道它为什么会崩溃,但不应该在onClick()中的else语句之外......它现在不会有所作为,但它可能在未来。 – Pluckerpluck 2012-02-29 17:29:17

回答

0

,如果你看了日志答案是它。检查线

E/AndroidRuntime(3074): android.content.ActivityNotFoundException: Unable to find explicit activity class {com.gta5news.bananaphone/com.gta5news.bananaphone.logincheck}; have you declared this activity in your AndroidManifest.xml? 

它说,你没有声明你的新活动,你试图打开你的按钮单击清单。将它添加到你的清单,它应该工作正常。

它试图在清单中找到您的logincheck类。

作为一个附注请尽量遵循java约定。使用骆驼套名称等。例如你的类应该被称为LoginCheck。更多关于Java约定here

您的清单应该已经有一个活动标签。根据其添加这样

<activity name="com.gta5news.bananaphone.logincheck" /> 

新的活动,应该这样做。

+0

好的,我会添加它,所以,我只是在清单中添加一个新的意图? – lrobb 2012-02-29 17:42:23

+0

Yayaya!我得到它排序,感谢您的所有帮助;) – lrobb 2012-02-29 17:45:25

0

main 01-19 07:02:49.421: E/AndroidRuntime(3074): android.content.ActivityNotFoundException: Unable to find explicit activity class

说明你还没有在AndroidManifest.xml文件中声明logincheck活动。

添加这样的:

<activity android:name=".logincheck" android:label="@string/app_name"></activity> 

android:name喜欢你给你的其他活动中的(一个或多个)..

+0

是的,我得到它排序,达到只是击败你的职位,否则,我会选择你的答案。 – lrobb 2012-02-29 17:46:39

相关问题