2014-03-19 5 views
1

내 애플 리케이션에서, 나는 EditText 요소를 조작하려고하는데, 그렇게하려고 할 때마다 나에게 nullPointerException을 던진다. 왜 내가이 다른 EditText, docTitle에 대해서만 발생하기 때문에이 작업을하는 이유는 모르겠다. 여기 안드로이드 nullPointerException EditText를 사용하여

예외가 발생합니다 자바 클래스의 일부입니다

public class MainActivity extends FragmentActivity implements RichText.EditTextImeBackListener, OnTouchListener, OnClickListener, TextWatcher{ 
    private String[] drawerListViewItems1; 
    private String[] drawerListViewItems2; 
    private ArrayList<Editable> undoStrings; 

    private int undoIndex; 

    //this is the EditText that is giving me trouble, it is defined down in onCreate 
    public EditText docTitle; 

    private int styleStart; 

    private ListView drawerListView1; 
    private ListView drawerListView2; 

    private RelativeLayout formatBar; 

    private DrawerLayout drawerLayout; 
    private ActionBarDrawerToggle actionBarDrawerToggle; 
    private RichText richText; 
    private SaveFragment saveFragment; 

    private ToggleButton boldButton; 
    private ToggleButton emButton; 
    private ToggleButton uButton; 
    private ToggleButton strikeButton; 

    private boolean keyboardShown; 
    private boolean alreadyShown; 
    private boolean isMainContent; 

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

     //finds the left drawer 
     drawerListView1 = (ListView) findViewById(R.id.left_drawer); 
     //finds right drawer 
     drawerListView2 = (ListView)findViewById(R.id.right_drawer); 

     //loads the first drawer 
     loadDrawer1(); 

     //loads the second drawer 
     loadDrawer2(); 

     //finds the drawer layout 
     drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 

     //assign ActionBarDrawerToggle 
     actionBarDrawerToggle = new ActionBarDrawerToggle(this, drawerLayout, R.drawable.ic_drawer, 
       R.string.drawer_open, R.string.drawer_close); 

     //sets the drawer listener 
     drawerLayout.setDrawerListener(new DrawerLayout.SimpleDrawerListener() { 
      @Override 
      public void onDrawerOpened(View drawerLayout){ 
       //hides format bar when a drawer is opened 
       if(keyboardShown){ 
        hideFormatBarAnim(); 
       } 
      } 

      @Override 
      public void onDrawerClosed(View drawerLayout){ 
       //shows format bar when closed 
       showFormatBar(); 
      } 
     }); 

     //enable and show "up" arrow 
     getActionBar().setDisplayHomeAsUpEnabled(true); 

     // just styling option for the drawer layout 
     drawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START); 

     //item click listener for drawer items 
     drawerListView1.setOnItemClickListener(new DrawerItemClickListener()); 
     drawerListView2.setOnItemClickListener(new DrawerItemClickListener()); 

     isMainContent= true; 
     alreadyShown=false; 
     keyboardShown=false; 

     undoIndex=0; 

     undoStrings = new ArrayList<Editable>(); 

     //assigns formatBar to its XML layout 
     formatBar = (RelativeLayout)findViewById(R.id.formatBar); 

     //assigns docTitle to its XML layout 
     docTitle = (EditText)findViewById(R.id.docTitle); 
     //This line here throws the error 
     docTitle.setText("Hello"); 

     //defines save fragment 
     saveFragment = new SaveFragment(); 

     //assigns richText to its XML layout and adds a TextChangeListener 
     richText= (RichText)findViewById(R.id.edit_text); 
     richText.addTextChangedListener(this); 

     //assigns boldButton to its XML layout and adds an OnClickListener 
     boldButton=(ToggleButton)findViewById(R.id.bold); 
     boldButton.setOnClickListener(this); 

     //assigns emButton to its XML layout and adds an OnClickListener 
     emButton=(ToggleButton)findViewById(R.id.ital); 
     emButton.setOnClickListener(this); 

     //assigns uButton to its XML layout and adds an OnClickListener 
     uButton=(ToggleButton)findViewById(R.id.underline); 
     uButton.setOnClickListener(this); 

     //assigns strikeButton to its XML layout and adds an onClickListener 
     strikeButton=(ToggleButton)findViewById(R.id.strike); 
     strikeButton.setOnClickListener(this); 

     //initiates sofKeyboardHook 
     softKeyboardHook(); 

     //creates the default saving directory 
     Doc.makeDefaultDir(); 
     lookForFiles(); 
    } 

을 그리고 여기에가는 XML 레이아웃입니다 : Heres는 로그

<?xml version="1.0" encoding="utf-8"?> 
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#ffffff"> 

    <RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="400dp" 
    android:background="#1E772F" 
    android:layout_marginTop="350dp"> 

     <EditText 
      android:id="@+id/docTitle" 
      android:text="DefaultDocName" 
      android:paddingTop="20dp" 
      android:layout_centerHorizontal="true" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginLeft="6dp"/> 

     <Button 
      android:id="@+id/save" 
      android:layout_height="wrap_content" 
      android:layout_width="150dp" 
      android:text="Save" 
      android:layout_below="@+id/docTitle" 
      android:layout_marginLeft="10dp" 
      android:layout_marginTop="20dp" 
      android:onClick="onSaveDoneClick"/> 
     <Button 
      android:id="@+id/cancel" 
      android:layout_height="wrap_content" 
      android:layout_width="150dp" 
      android:text="Cancel" 
      android:layout_marginLeft="20dp" 
      android:layout_marginTop="20dp" 
      android:layout_below="@+id/docTitle" 
      android:layout_toRightOf="@+id/save" 
      android:onClick="cancelSave"/> 


    </RelativeLayout> 
</ScrollView> 

오류 발생시 :

03-19 09:48:50.246 12996-12996/com.noahl98.jotmobile E/AndroidRuntime﹕ FATAL EXCEPTION: main 
    Process: com.noahl98.jotmobile, PID: 12996 
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.noahl98.jotmobile/com.noahl98.jotmobile.MainActivity}: java.lang.NullPointerException 
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2190) 
      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2250) 
      at android.app.ActivityThread.access$700(ActivityThread.java:139) 
      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1411) 
      at android.os.Handler.dispatchMessage(Handler.java:102) 
      at android.os.Looper.loop(Looper.java:137) 
      at android.app.ActivityThread.main(ActivityThread.java:5083) 
      at java.lang.reflect.Method.invokeNative(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:515) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593) 
      at dalvik.system.NativeStart.main(Native Method) 
    Caused by: java.lang.NullPointerException 
      at com.noahl98.jotmobile.MainActivity.onCreate(MainActivity.java:133) 
      at android.app.Activity.performCreate(Activity.java:5260) 
      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1110) 
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2154) 
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2250) 
            at android.app.ActivityThread.access$700(ActivityThread.java:139) 
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1411) 
            at android.os.Handler.dispatchMessage(Handler.java:102) 
            at android.os.Looper.loop(Looper.java:137) 
            at android.app.ActivityThread.main(ActivityThread.java:5083) 
            at java.lang.reflect.Method.invokeNative(Native Method) 
            at java.lang.reflect.Method.invoke(Method.java:515) 
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593) 
            at dalvik.system.NativeStart.main(Native Method) 

미리 도움을 주셔서 감사합니다.

+1

MainActivity 파일의 133 행은 어느 것입니까? – nKn

+0

당신은 setContentView (R.layout.activity_main)를 체크 했습니까; 암호? – Jamshid

+0

라인 133은'docTitle.setText ("Hello")' –

답변

1

팽창중인 레이아웃을 'activity_main.xml'이라고하며 첨부 한 레이아웃 파일에없는 여러 가지 서랍 및 기타 항목이 포함 된 것으로 보입니다. 레이아웃 파일을 혼동하지 않도록하십시오.

은 기본적으로는

//assigns docTitle to its XML layout 
docTitle = (EditText)findViewById(R.id.docTitle); 
//This line here throws the error 
docTitle.setText("Hello"); 

당신을 제공하는 이유입니다 'activity_main.xml'파일에 'docTitle'를하지 않아도 당신처럼 나타나는 'docTitle = 널 (null)'

+0

입니다. 제 문제는 docTitle이있는 XML 파일이 MainActivity가 아닌 다른 클래스에 연결되어 있기 때문에 오류가 발생했기 때문입니다. 다시 한번 감사드립니다. –

0

문제는 그

setContentView(R.layout.activity_main); 
: 당신이 당신의에서 onCreate 함수에서로드 레이아웃을 확인할 수

EDITTEXT이있는 한, 아니다

게시 한 activity_main 레이아웃이 맞습니까?

나중에 onCreate 메서드에서 붙여 넣은 XML에없는 drawerListView1을 사용하고 있고 그 중 하나가 null이 아니기 때문에.

사용중인보기가로드중인 레이아웃에 있어야합니다.

관련 문제