2014-02-21 101 views
0

當我嘗試魯奇我的應用程序,這個錯誤信息出現,請大家幫幫忙:了java.lang.RuntimeException:無法啓動活動

這是錯誤消息:

02-21 10:46:40.551 1092-1092/com.example.myapplication3.app E/AndroidRuntime﹕ FATAL EXCEPTION: main 
Process: com.example.myapplication3.app, PID: 1092 
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.myapplication3.app/com.example.myapplication3.app.MainActivity2}: java.lang.NullPointerException 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2176) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2226) 
     at android.app.ActivityThread.access$700(ActivityThread.java:135) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1397) 
     at android.os.Handler.dispatchMessage(Handler.java:102) 
     at android.os.Looper.loop(Looper.java:137) 
     at android.app.ActivityThread.main(ActivityThread.java:4998) 
     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.example.myapplication3.app.MainActivity2.onCreate(MainActivity2.java:27) 
     at android.app.Activity.performCreate(Activity.java:5243) 
     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2140) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2226) 
     at android.app.ActivityThread.access$700(ActivityThread.java:135) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1397) 
     at android.os.Handler.dispatchMessage(Handler.java:102) 
     at android.os.Looper.loop(Looper.java:137) 
     at android.app.ActivityThread.main(ActivityThread.java:4998) 
     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) 

的java線關聯到這是一個錯誤代碼是: ((按鈕)findViewById(R.id.monBouton))setOnClickListener(....)

這是我的java代碼:

package com.example.myapplication3.app; 



public class MainActivity2 extends ActionBarActivity { 

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

    if (savedInstanceState == null) { 
     getSupportFragmentManager().beginTransaction() 
       .add(R.id.container, new PlaceholderFragment()) 
       .commit(); 
    } 
    ((Button)findViewById(R.id.monBouton)).setOnClickListener(
      new OnClickListener() { 
     @Override 
     public void onClick(View v) { 

         EditText texte = ((EditText)findViewById(R.id.monEditText)); 

       String nom = texte.getText().toString(); 

       Toast.makeText(MainActivity2.this, nom, Toast.LENGTH_SHORT).show(); 
     } 
    }); 
    } 


@Override 
public boolean onCreateOptionsMenu(Menu menu) { 


    getMenuInflater().inflate(R.menu.main_activity2, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 

    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_main2, container, false); 
     return rootView; 
    } 
} 

} 

代碼XML

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent"> 

<EditText 
    android:id="@+id/monEditText" 
    android:layout_height="wrap_content" 
    android:hint="Taper votre nom" 
    android:layout_width="fill_parent"> 

</EditText> 
<!-- 
Le Bouton qui permettra à l’utilisateur 
de valider sa saisie 
--> 
<Button 
    android:id="@+id/monBouton" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Valider" 
    android:layout_gravity="center_horizontal"> 
</Button> 
</LinearLayout> 
+0

鑑於XML代碼是佈局fragment_main2.xml或activity_main.xml? – silwar

回答

0

用途:

Button mButton = (Button)findViewById(R.id.monBouton); 

然後:

mButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
         //Code here 
        } 
}); 
+0

這是一個關於代碼可讀性的好建議,但不負責他的NullPointerException。 –

+0

+1豎起大拇指,你找到了問題的根源:) – Skynet

+0

它不工作:( – abdoBim

1

你得到一個NullpointerException因爲佈局文件不包含View(最有可能是FrameLayout),編號爲R.id.container

所以這段代碼會崩潰:

getSupportFragmentManager().beginTransaction() 
       .add(R.id.container, new PlaceholderFragment()) 
       .commit(); 

因爲「R.id.container」並不在佈局文件存在。把一個FrameLayout與ID「容器」在你的佈局文件。例如:

<FrameLayout 
     android:id="@+id/container" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" > 
</FrameLayout> 
+0

喜弘Jahada,你的意思是這樣的: abdoBim

+0

內,您的佈局文件,你需要一個FrameLayout裏將包含片段 –

+0

的FrameLayout裏已經存在,我剛纔提到的,發生的問題,當我想要檢索的事件。組件!! – abdoBim

相關問題