2012-06-15 9 views
-2

나는 안드로이드에서 일하고 내 환경 설정 파일에서 값을 읽으려고합니다. 내가 run.a 메시지가 emulator.the 에 나타날 때 하지만 응용 프로그램이 예기치 않게 여기 중지 내 환경 설정 파일 이름입니다 pref.and는 inres/XML독서 환경 설정 값

<?xml version="1.0" encoding="utf-8"?> 
    <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> 
     <CheckBoxPreference android:defaultValue="false" 
      android:key="@string/first"/> 
    </PreferenceScreen> 

이 나는 ​​주요 활동입니다했다 가치를 되 찾는 것.

package code.finalwork; 

import android.app.Activity; 
import android.content.Context; 
import android.content.SharedPreferences; 
import android.os.Bundle; 
import android.widget.EditText; 

public class FinalWorkActivity extends Activity { 
    private String pref_file="pref.xml"; 
EditText text=(EditText) findViewById(R.id.editText1); 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     SharedPreferences pref=getSharedPreferences(pref_file,Context.MODE_PRIVATE); 
     Boolean val= pref.getBoolean("firstuse", true); 
     if(val) 
     { 
      text.setText("first use"); 
     } 
     else 
     { 
      text.setText("Not first use"); 
     } 


    } 
} 

누군가를 알아보십시오.

+1

먼저 디버그 모드로 실행해야합니다. logcat 및 이와 같은 충돌로 인해 발생하는 치명적인 예외를 주시하십시오. 그것을 일으킨 행 번호가 표시됩니다. 해당 라인을 클릭하십시오. –

+0

나는 stacktrace 정보를 항상 포함시켜 솔직하게 직접 검토해야하기 때문에 질문에 투표했습니다. –

+0

또한 Pref 파일에서 가치를 얻지 못하고 ... 어떤 가치를 얻고 있습니까? –

답변

0

후이 줄을 넣어.

편집 : 그래서 당신이해야 할 기본 설정을 저장 기억 :

여기
SharedPreferences pref = getSharedPreferences(pref_file,Context.MODE_PRIVATE); 
SharedPreferences.Editor editor = pref.edit();   
editor.putBoolean("firstuse", authToken); 
editor.commit(); 
+0

감사합니다. – Kamran

+0

하지만 내 코드에서 작동하지 않는 이유는 무엇입니까 ?? – Kamran

+0

또 하나의 문제는 pref 파일에서 기본값을 읽지 않는 것입니다. – Kamran

3

setContentView 후에 onCreate 함수 내에서 텍스트 (EditText)를 초기화하십시오.

public class FinalWorkActivity extends Activity { 
    private String pref_file="pref.xml"; 
    EditText text; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     text = (EditText) findViewById(R.id.editText1); 
     SharedPreferences pref=getSharedPreferences(pref_file,Context.MODE_PRIVATE); 
     Boolean val= pref.getBoolean("firstuse", true); 
     if(val) { 
     text.setText("first use"); 
     } else { 
     text.setText("Not first use"); 
     } 
    } 
} 

가 해결되지 않으면 오류 로그를 게시하시기 바랍니다 :

이 시도 setContentView(R.layout.main);

EditText text=(EditText) findViewById(R.id.editText1); 
+0

이 답변은 정확합니다. 그러나 항상 스택 추적으로 질문을 게시해야합니다. 먼저 항상 eclipse에서 logcat 뷰에서 볼 수있는 스택 추적을 살펴보십시오. 이것은 당신에게 더 많은 정보를 주었을 것입니다. –

+0

그래, 그게 효과가.하지만 더 많은 문제에, 그것은 pref 파일에 저장된 값을 읽지 않습니다. – Kamran

+0

string.xml의 entry @ string/first는 저를 확인할 수 있습니까? –

1

당신이 자신처럼 뭔가에 대한 답을 찾을 수있는 방법입니다. 창 - 이동> showview-> 로그 캣 빨간색 라인에

클릭 :

E/AndroidRuntime (333) :. com.test.testing.YourActivityName에서 (TesterActivity.java:11) 06-15 11 : 59 : 05.616 :

은 빨간색으로 볼 것이다 : 06-14 11 : 59 : 05.526 : W/dalvikvm (333) threadid = 1 : 스레드 캐치되지 않는 예외 군 (= 0x40015560)로 출사 06- 15 : 59 : 05.616 : E/AndroidRuntime (333) : 치명적인 예외 : 주 06-15 11 : 59 : 05.616 : E/AndroidRuntime (333) : java.lang.RuntimeException : 활동을 인스턴스화 할 수 없습니다. ComponentInfo {com.test .testing/com.test.testing.TesterActivity} : java.lang.N ullPointerException 06-15 11 : 59 : 05.616 : E/AndroidRuntime (333) : android.app.ActivityThread.performLaunchActivity (ActivityThread.java:1569) 06-15 11 : 59 : 05.616 : E/AndroidRuntime (333) : android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:1663) 06-15 11 : 59 : 05.616 : E/AndroidRuntime (333) : android.app.ActivityThread.access $ 1500 (ActivityThread.java:117) 06 -15 11 : 59 : 05.616 : E/AndroidRuntime (333) : android.app.ActivityThread $ H.handleMessage (ActivityThread.java:931) 06-15 11 : 59 : 05.616 : E/AndroidRuntime (333) : at android.os.Handler.dispatchMessage (Handler.java:99) 06-15 11 : 59 : 05.616 : E/AndroidRuntime (333) : android.os.Looper.loop (Looper.java:123) 06-15 11 : 59 : 05.616 : E/AndroidRuntime (333) : android.app.ActivityThread.main (ActivityThread.java:3683) 06-15 11 : 59 : 05.616 : E/AndroidRuntime (333) : java.lang.reflect.Method.invokeNative (기본 메소드) 06-15 11 : 59 : 05.616 : E/AndroidRuntime (333) : java .lang.reflect.Method.invoke (Method.java:507) 06-15 11 : 59 : 05.616 : E/AndroidRuntime (333) : com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java : 839) 06-15 11 : 59 : 05.616 : E/AndroidRuntime (333) : com.android.internal.os.ZygoteInit.main (ZygoteInit.java:597) 06-15 11 : 59 : 05.616 : E/AndroidRuntime (333) : dalvik.system에서 확인하십시오.NativeStart.main (네이티브 메소드) 06-15 11 : 59 : 05.616 : E/AndroidRuntime (333) : 원인 : java.lang.NullPointerException 06-15 11 : 59 : 05.616 : E/AndroidRuntime (333) : at android.app.Activity.findViewById (Activity.java:1647) 06-15 11 : 59 : 05.616 : E/AndroidRuntime (333) : com.test.testing.TesterActivity. (TesterActivity.java:11) 06- 15 11 : 59 : 05.616 : E/AndroidRuntime (333) : java.lang.Class.newInstanceImpl (기본 메소드) 06-15 11 : 59 : 05.616 : E/AndroidRuntime (333) : java.lang.Class. newInstance (Class.java:1409) 06-15 11 : 59 : 05.616 : E/AndroidRuntime (333) : android.app.Instrumentation.newActivity (Instrumentation.java:1021) 06-15 11 : 59 : 05.616 : E/AndroidRuntime (333) : android.app.ActivityThread.performLaunchActivity (ActivityThread.java:1561) 06-15 11 : 59 : 05.616 : E/AndroidRuntime (333) : ... 11 더