2014-04-11 25 views
0

我在sharedpreferences上遇到了一個問題,我在第43行錯誤中得到了一個N​​ullPointerException,我將提供所有需要的信息,我厭倦了試圖解決它幾個小時的問題。Android應用程序在SharedPreferences按鈕上的NullPointerException

我有3個活動,主要活動2按鈕=查看和編輯。

這個應用程序是關於什麼的。 用戶打開應用程序,並得到2按鈕,我說,查看和編輯。 當他按下Edit時,他會輸入一些信息,如姓名,姓氏,尼克,地址,電話,電子郵件。 當他按下按鈕保存時,他會轉到查看活動並查看他剛剛擺放的信息。

編輯按鈕JAVA是這樣的:

public class Editaremesaj extends ActionBarActivity { 

    public static final String PREFS_NAME = "MyPreferencesFile"; 

    EditText name = null; 
    EditText lastname = null; 
    EditText nickname = null; 
    EditText adress = null; 
    EditText phone = null; 
    EditText myemail = null; 
    EditText mylevel = null; 
    Button btn = null; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_editaremesaj); 

     name = (EditText)findViewById(R.id.name); 
     lastname = (EditText)findViewById(R.id.lastname); 
     nickname = (EditText)findViewById(R.id.nickname); 
     adress = (EditText)findViewById(R.id.adress); 
     phone = (EditText)findViewById(R.id.phone); 
     myemail = (EditText)findViewById(R.id.email); 
     mylevel = (EditText)findViewById(R.id.level); 

     btn = (Button)findViewById(R.id.btnshared); 
     btn.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        // TODO Auto-generated method stub 

        SharedPreferences settings = getSharedPreferences (PREFS_NAME,0); 
        SharedPreferences.Editor editor = settings.edit(); 

        editor.putString("name", name.getText().toString()); 
        editor.putString("lastname", lastname.getText().toString()); 
        editor.putString("nickname", nickname.getText().toString()); 
        editor.putString("adress", adress.getText().toString()); 
        editor.putString("phone", phone.getText().toString()); 
        editor.putString("myemail", myemail.getText().toString()); 
        editor.putString("mylevel", mylevel.getText().toString()); 

        editor.commit(); 

        Intent intent = new Intent(getApplicationContext(), Aratamesaj.class); 
        startActivity(intent); 
       } 
      }); 

     if (savedInstanceState == null) { 
      getSupportFragmentManager().beginTransaction() 
        .add(R.id.container, new PlaceholderFragment()).commit(); 
     } 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 

     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.editaremesaj, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 
     if (id == R.id.action_settings) { 
      return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 

    /** 
    * A placeholder fragment containing a simple view. 
    */ 
    public static class PlaceholderFragment extends Fragment { 

     public PlaceholderFragment() { 
     } 

     @Override 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, 
       Bundle savedInstanceState) { 
      View rootView = inflater.inflate(R.layout.fragment_editaremesaj, 
        container, false); 
      return rootView; 
     } 
    } 

} 

編輯活動的XML是這樣的:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="com.example.citiresiscriere.Editaremesaj$PlaceholderFragment" > 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:layout_marginLeft="38dp" 
     android:layout_marginTop="28dp" 
     android:text="Name:" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 

    <EditText 
     android:id="@+id/name" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBottom="@+id/textView1" 
     android:layout_marginLeft="21dp" 
     android:layout_toRightOf="@+id/textView1" 
     android:ems="10" android:inputType="text"> 

     <requestFocus /> 
    </EditText> 

    <EditText 
     android:id="@+id/nickname" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBaseline="@+id/textView3" 
     android:layout_alignBottom="@+id/textView3" 
     android:layout_alignLeft="@+id/lastname" 
     android:ems="10" android:inputType="text"/> 

    <EditText 
     android:id="@+id/lastname" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBottom="@+id/textView2" 
     android:layout_alignLeft="@+id/name" 
     android:ems="10" android:inputType="text"/> 

    <TextView 
     android:id="@+id/textView4" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignRight="@+id/textView3" 
     android:layout_below="@+id/nickname" 
     android:layout_marginTop="28dp" 
     android:text="Adress:" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 

    <EditText 
     android:id="@+id/adress" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBottom="@+id/textView4" 
     android:layout_alignLeft="@+id/nickname" 
     android:ems="10" android:inputType="text"/> 

    <TextView 
     android:id="@+id/textView2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/textView1" 
     android:layout_marginTop="24dp" 
     android:layout_toLeftOf="@+id/name" 
     android:text="Lastname:" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 

    <TextView 
     android:id="@+id/textView3" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/textView2" 
     android:layout_marginTop="21dp" 
     android:layout_toLeftOf="@+id/name" 
     android:text="Nick-name:" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 

    <TextView 
     android:id="@+id/textView5" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/textView4" 
     android:layout_marginTop="30dp" 
     android:layout_toLeftOf="@+id/name" 
     android:text="Phone:" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 

    <EditText 
     android:id="@+id/phone" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBottom="@+id/textView5" 
     android:layout_alignLeft="@+id/adress" 
     android:ems="10" 
     android:inputType="text"/> 

    <TextView 
     android:id="@+id/textView6" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/textView5" 
     android:layout_marginTop="26dp" 
     android:layout_toLeftOf="@+id/name" 
     android:text="E-mail:" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 

    <EditText 
     android:id="@+id/email" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBottom="@+id/textView6" 
     android:layout_alignLeft="@+id/phone" 
     android:ems="10" android:inputType="text"/> 

    <TextView 
     android:id="@+id/textView7" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/textView6" 
     android:layout_marginTop="28dp" 
     android:layout_toLeftOf="@+id/name" 
     android:text="Level:" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 

    <EditText 
     android:id="@+id/level" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBottom="@+id/textView7" 
     android:layout_alignLeft="@+id/email" 
     android:ems="10" android:inputType="text"/> 

    <Button 
     android:id="@+id/btnshared" 
     style="?android:attr/buttonStyleSmall" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_alignRight="@+id/level" 
     android:layout_marginBottom="24dp" 
     android:text="@string/salveaza" /> 

</RelativeLayout> 

和logcat的:

04-11 08:20:37.144: I/dalvikvm(597): Could not find method android.content.pm.PackageManager.getActivityLogo, referenced from method android.support.v7.internal.widget.ActionBarView.<init> 
04-11 08:20:37.144: W/dalvikvm(597): VFY: unable to resolve virtual method 323: Landroid/content/pm/PackageManager;.getActivityLogo (Landroid/content/ComponentName;)Landroid/graphics/drawable/Drawable; 
04-11 08:20:37.144: D/dalvikvm(597): VFY: replacing opcode 0x6e at 0x008b 
04-11 08:20:37.144: I/dalvikvm(597): Could not find method android.content.pm.ApplicationInfo.loadLogo, referenced from method android.support.v7.internal.widget.ActionBarView.<init> 
04-11 08:20:37.144: W/dalvikvm(597): VFY: unable to resolve virtual method 319: Landroid/content/pm/ApplicationInfo;.loadLogo (Landroid/content/pm/PackageManager;)Landroid/graphics/drawable/Drawable; 
04-11 08:20:37.144: D/dalvikvm(597): VFY: replacing opcode 0x6e at 0x0099 
04-11 08:20:37.164: D/dalvikvm(597): VFY: dead code 0x008e-0092 in Landroid/support/v7/internal/widget/ActionBarView;.<init> (Landroid/content/Context;Landroid/util/AttributeSet;)V 
04-11 08:20:37.164: D/dalvikvm(597): VFY: dead code 0x009c-00a0 in Landroid/support/v7/internal/widget/ActionBarView;.<init> (Landroid/content/Context;Landroid/util/AttributeSet;)V 
04-11 08:20:38.454: D/dalvikvm(597): GC_FOR_MALLOC freed 4374 objects/272672 bytes in 69ms 
04-11 08:20:38.554: D/AndroidRuntime(597): Shutting down VM 
04-11 08:20:38.554: W/dalvikvm(597): threadid=1: thread exiting with uncaught exception (group=0x4001d800) 
04-11 08:20:38.564: E/AndroidRuntime(597): FATAL EXCEPTION: main 
04-11 08:20:38.564: E/AndroidRuntime(597): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.citiresiscriere/com.example.citiresiscriere.Editaremesaj}: java.lang.NullPointerException 
04-11 08:20:38.564: E/AndroidRuntime(597): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663) 
04-11 08:20:38.564: E/AndroidRuntime(597): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 
04-11 08:20:38.564: E/AndroidRuntime(597): at android.app.ActivityThread.access$2300(ActivityThread.java:125) 
04-11 08:20:38.564: E/AndroidRuntime(597): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 
04-11 08:20:38.564: E/AndroidRuntime(597): at android.os.Handler.dispatchMessage(Handler.java:99) 
04-11 08:20:38.564: E/AndroidRuntime(597): at android.os.Looper.loop(Looper.java:123) 
04-11 08:20:38.564: E/AndroidRuntime(597): at android.app.ActivityThread.main(ActivityThread.java:4627) 
04-11 08:20:38.564: E/AndroidRuntime(597): at java.lang.reflect.Method.invokeNative(Native Method) 
04-11 08:20:38.564: E/AndroidRuntime(597): at java.lang.reflect.Method.invoke(Method.java:521) 
04-11 08:20:38.564: E/AndroidRuntime(597): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
04-11 08:20:38.564: E/AndroidRuntime(597): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
04-11 08:20:38.564: E/AndroidRuntime(597): at dalvik.system.NativeStart.main(Native Method) 
04-11 08:20:38.564: E/AndroidRuntime(597): Caused by: java.lang.NullPointerException 
04-11 08:20:38.564: E/AndroidRuntime(597): at com.example.citiresiscriere.Editaremesaj.onCreate(Editaremesaj.java:43) 
04-11 08:20:38.564: E/AndroidRuntime(597): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
04-11 08:20:38.564: E/AndroidRuntime(597): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 
04-11 08:20:38.564: E/AndroidRuntime(597): ... 11 more 

的線43是在這裏:

btn = (Button)findViewById(R.id.btnshared); 
     btn.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        // TODO Auto-generated method stub 

        SharedPreferences settings = getSharedPreferences (PREFS_NAME,0); 
        SharedPreferences.Editor editor = settings.edit(); 

btn.setOnClickListener(new View.OnClickListener() {

顯示按鈕的Java文件:

public class Aratamesaj extends ActionBarActivity { 


    public static final String PREFS_NAME = "MyPreferencesFile"; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_aratamesaj); 

     TextView name = (TextView)findViewById(R.id.textViewname); 
     TextView lastname = (TextView)findViewById(R.id.textViewlastname); 
     TextView nickname = (TextView)findViewById(R.id.textViewnick); 
     TextView adress = (TextView)findViewById(R.id.textViewadress); 
     TextView phone = (TextView)findViewById(R.id.textViewphone); 
     TextView email = (TextView)findViewById(R.id.textViewemail); 
     TextView level = (TextView)findViewById(R.id.textViewlevel); 


     SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 

     name.setText(settings.getString("name","ERROR")); 
     lastname.setText(settings.getString("lastname", "ERROR")); 
     nickname.setText(settings.getString("nickname", "ERROR")); 
     adress.setText(settings.getString("adress", "ERROR")); 
     phone.setText(settings.getString("phone", "ERROR")); 
     email.setText(settings.getString("myemail", "ERROR")); 
     level.setText(settings.getString("mylevel", "ERROR")); 

     if (savedInstanceState == null) { 
      getSupportFragmentManager().beginTransaction() 
        .add(R.id.container, new PlaceholderFragment()).commit(); 
     } 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 

     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.aratamesaj, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 
     if (id == R.id.action_settings) { 
      return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 

    /** 
    * A placeholder fragment containing a simple view. 
    */ 
    public static class PlaceholderFragment extends Fragment { 

     public PlaceholderFragment() { 
     } 

     @Override 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, 
       Bundle savedInstanceState) { 
      View rootView = inflater.inflate(R.layout.fragment_aratamesaj, 
        container, false); 
      return rootView; 
     } 
    } 

} 

和XML:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="com.example.citiresiscriere.Aratamesaj$PlaceholderFragment" > 

    <TextView 
     android:id="@+id/textView7" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignRight="@+id/textView6" 
     android:layout_below="@+id/textView6" 
     android:layout_marginTop="26dp" 
     android:text="Level:" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 

    <TextView 
     android:id="@+id/textView3" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_below="@+id/textView2" 
     android:layout_marginTop="24dp" 
     android:text="Nick-name:" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 

    <TextView 
     android:id="@+id/textView4" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignRight="@+id/textView3" 
     android:layout_below="@+id/textView3" 
     android:layout_marginTop="19dp" 
     android:text="Adress:" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 

    <TextView 
     android:id="@+id/textView5" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignRight="@+id/textView4" 
     android:layout_below="@+id/textView4" 
     android:layout_marginTop="22dp" 
     android:text="Phone:" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 

    <TextView 
     android:id="@+id/textView6" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignRight="@+id/textView5" 
     android:layout_below="@+id/textView5" 
     android:layout_marginTop="22dp" 
     android:text="E-mail:" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 

    <TextView 
     android:id="@+id/textView2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignRight="@+id/textView3" 
     android:layout_below="@+id/textView1" 
     android:layout_marginTop="20dp" 
     android:text="Lastname:" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:layout_alignRight="@+id/textView2" 
     android:layout_marginTop="40dp" 
     android:text="Name:" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 

    <TextView 
     android:id="@+id/textViewname" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBaseline="@+id/textView1" 
     android:layout_alignBottom="@+id/textView1" 
     android:layout_alignParentRight="true" 
     android:layout_marginRight="46dp" 
     android:text="" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 

    <TextView 
     android:id="@+id/textViewlastname" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBottom="@+id/textView2" 
     android:layout_alignLeft="@+id/numecitire" 
     android:text="" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 

    <TextView 
     android:id="@+id/textViewnick" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBaseline="@+id/textView3" 
     android:layout_alignBottom="@+id/textView3" 
     android:layout_alignLeft="@+id/textView9" 
     android:text="" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 

    <TextView 
     android:id="@+id/textViewadress" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBaseline="@+id/textView4" 
     android:layout_alignBottom="@+id/textView4" 
     android:layout_alignLeft="@+id/textView10" 
     android:text="" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 

    <TextView 
     android:id="@+id/textViewphone" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBaseline="@+id/textView5" 
     android:layout_alignBottom="@+id/textView5" 
     android:layout_alignLeft="@+id/textView11" 
     android:text="" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 

    <TextView 
     android:id="@+id/textViewemail" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBottom="@+id/textView6" 
     android:layout_alignLeft="@+id/textView12" 
     android:text="" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 

    <TextView 
     android:id="@+id/textViewlevel" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBottom="@+id/textView7" 
     android:layout_alignLeft="@+id/textView13" 
     android:text="" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 

</RelativeLayout> 

謝謝你,有一個愉快的一天。

+0

activity_editaremesaj是在我的項目空白,我填補了fragment_editaremesaj – MarianP

+0

無需雙重職位。如有必要,請用更多(或更簡潔)的信息修改原始問題。 (http://stackoverflow.com/questions/23005865/android-app-develop-savedpreferences-not-working-property。) – indivisible

+0

我刪除了它,我做了一些更改,它是太多的信息更新,我有一些那裏出現錯誤,用戶很難理解。 – MarianP

回答

0

getSharedPreferences()只能在onCreate(之後被調用)。

+0

我沒有叫它? super.onCreate(savedInstanceState); – MarianP

0

嘗試得到一個編輯器:

SharedPreferences.Editor editor = PreferenceManager.getDefaultSharedPreferences(context).edit(); 
+1

我應該把什麼放在上下文中? – MarianP

+0

如果你從'Activity'使用'this'從'Fragment'中調用'getActivity()'。 –

相關問題