mercredi 9 avril 2014

Java - Application se bloque lorsque vous utilisez startActivityForResult - Stack Overflow


I'm using startActivityForResult between 2 classes "MainActivity" & "abc" class . The problem I have is the application keeps crashing upon launch and by reading LogCat I think the crash due to NPE " NullPointException" in MainActivity class (but I'm not sure) . I have searched for hours for solution but couldn't find one that solves my case .


1)MainActivity class :


package com.example.passstrings;


import android.support.v7.app.ActionBarActivity;
import android.support.v4.app.Fragment;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends ActionBarActivity {
Button bt1;
TextView tv2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

tv2 = (TextView) findViewById(R.id.textView2);
bt1=(Button) findViewById(R.id.button1);
bt1.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(MainActivity.this , abc.class);
startActivityForResult(intent , 0);

}
});



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

@Override
protected void onActivityResult(int requestCode , int resultCode , Intent data){
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK){
Intent intent = getIntent();
String pass= intent.getExtras().getString("key");
tv2.setText(pass);
}

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, 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_main, container, false);
return rootView;
}
}

}

2)abc class


package com.example.passstrings;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.RadioButton;
import android.widget.TextView;

public class abc extends Activity{
TextView tv1;
String setData;
RadioButton r1,r2,r3,r4;
Button bt2;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.abc);
r1 = (RadioButton) findViewById(R.id.radioButton1);
r2 = (RadioButton) findViewById(R.id.RadioButton01);
r3 = (RadioButton) findViewById(R.id.RadioButton02);
r4 = (RadioButton) findViewById(R.id.RadioButton03);
bt2.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub

if (r1.isChecked() || r2.isChecked() || r3.isChecked() == true){
setData ="Failed";
}else if (r3.isChecked() ==true){
setData="Passed";
}else{
setData="You didn't choose an answer";
}
Intent Int = new Intent(abc.this , MainActivity.class);
Int.putExtra("key", setData);
setResult(RESULT_OK , Int);
finish();






}

});
}
}

3)LogCat :


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

4)abc.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">

<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="23dp"
android:text="Which of the following vitamins helps clotting the blood : "
android:textSize="30sp" />

<RadioButton
android:id="@+id/radioButton1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView2"
android:layout_below="@+id/textView2"
android:layout_marginLeft="62dp"
android:layout_marginTop="14dp"
android:text="Vitamin A" />

<RadioButton
android:id="@+id/RadioButton03"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/RadioButton01"
android:layout_alignParentBottom="true"
android:layout_marginBottom="60dp"
android:text="None Of Above" />

<RadioButton
android:id="@+id/RadioButton01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/RadioButton03"
android:layout_alignRight="@+id/RadioButton02"
android:layout_marginBottom="26dp"
android:text="Vitamin C" />

<RadioButton
android:id="@+id/RadioButton02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/radioButton1"
android:layout_below="@+id/radioButton1"
android:layout_marginTop="16dp"
android:text="Vitamin D" />

<Button
android:id="@+id/button1"
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:text="Check"
android:textSize="30sp" />

</RelativeLayout>

5)fragment_main.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.ytdownload.MainActivity$PlaceholderFragment" >

>

<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="23dp"
android:text="Click Below to start the test . Please only choose on of the answers"
android:textSize="30sp" />

<Button
android:id="@+id/button1"
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textView2"
android:layout_centerHorizontal="true"
android:layout_marginTop="74dp"
android:text="Start"
android:textSize="30sp" />

</RelativeLayout>

6)Manifest :


<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.passstrings"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="19" />

<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.passstrings.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="com.example.passstrings.abc" />
</application>

</manifest>

7)activity_main.xml :


<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:ignore="MergeRootFrame"

tools:context="com.example.passstrings.MainActivity$PlaceholderFragment" >

>


</FrameLayout>

If I change setContentView in MainActivity to fragment it shows me this error in LogCat "although setting it to activity_main and editing fragment_main always worked me me"


04-04 15:13:42.995: I/dalvikvm(592): Could not find method android.content.pm.PackageManager.getActivityLogo, referenced from method android.support.v7.internal.widget.ActionBarView.<init>
04-04 15:13:42.995: W/dalvikvm(592): VFY: unable to resolve virtual method 320: Landroid/content/pm/PackageManager;.getActivityLogo (Landroid/content/ComponentName;)Landroid/graphics/drawable/Drawable;
04-04 15:13:42.995: D/dalvikvm(592): VFY: replacing opcode 0x6e at 0x008b
04-04 15:13:42.995: I/dalvikvm(592): Could not find method android.content.pm.ApplicationInfo.loadLogo, referenced from method android.support.v7.internal.widget.ActionBarView.<init>
04-04 15:13:42.995: W/dalvikvm(592): VFY: unable to resolve virtual method 316: Landroid/content/pm/ApplicationInfo;.loadLogo (Landroid/content/pm/PackageManager;)Landroid/graphics/drawable/Drawable;
04-04 15:13:42.995: D/dalvikvm(592): VFY: replacing opcode 0x6e at 0x0099
04-04 15:13:43.006: D/dalvikvm(592): VFY: dead code 0x008e-0092 in Landroid/support/v7/internal/widget/ActionBarView;.<init> (Landroid/content/Context;Landroid/util/AttributeSet;)V
04-04 15:13:43.006: D/dalvikvm(592): VFY: dead code 0x009c-00a0 in Landroid/support/v7/internal/widget/ActionBarView;.<init> (Landroid/content/Context;Landroid/util/AttributeSet;)V
04-04 15:13:43.135: E/FragmentManager(592): No view found for id 0x7f050042 (com.example.passstrings:id/container) for fragment PlaceholderFragment{4a310490 #0 id=0x7f050042}
04-04 15:13:43.135: E/FragmentManager(592): Activity state:
04-04 15:13:43.135: D/FragmentManager(592): Local FragmentActivity 4a2f4ae8 State:
04-04 15:13:43.135: D/FragmentManager(592): mCreated=truemResumed=false mStopped=false mReallyStopped=false
04-04 15:13:43.135: D/FragmentManager(592): mLoadersStarted=false
04-04 15:13:43.135: D/FragmentManager(592): Active Fragments in 4a2f5aa8:
04-04 15:13:43.135: D/FragmentManager(592): #0: PlaceholderFragment{4a310490 #0 id=0x7f050042}
04-04 15:13:43.151: D/FragmentManager(592): mFragmentId=#7f050042 mContainerId=#7f050042 mTag=null
04-04 15:13:43.151: D/FragmentManager(592): mState=0 mIndex=0 mWho=android:fragment:0 mBackStackNesting=0
04-04 15:13:43.155: D/FragmentManager(592): mAdded=true mRemoving=false mResumed=false mFromLayout=false mInLayout=false
04-04 15:13:43.155: D/FragmentManager(592): mHidden=false mDetached=false mMenuVisible=true mHasMenu=false
04-04 15:13:43.155: D/FragmentManager(592): mRetainInstance=false mRetaining=false mUserVisibleHint=true
04-04 15:13:43.155: D/FragmentManager(592): mFragmentManager=FragmentManager{4a2f5aa8 in MainActivity{4a2f4ae8}}
04-04 15:13:43.155: D/FragmentManager(592): mActivity=com.example.passstrings.MainActivity@4a2f4ae8
04-04 15:13:43.155: D/FragmentManager(592): Added Fragments:
04-04 15:13:43.165: D/FragmentManager(592): #0: PlaceholderFragment{4a310490 #0 id=0x7f050042}
04-04 15:13:43.165: D/FragmentManager(592): FragmentManager misc state:
04-04 15:13:43.165: D/FragmentManager(592): mActivity=com.example.passstrings.MainActivity@4a2f4ae8
04-04 15:13:43.165: D/FragmentManager(592): mContainer=android.support.v4.app.FragmentActivity$2@4a2f63b0
04-04 15:13:43.165: D/FragmentManager(592): mCurState=2 mStateSaved=false mDestroyed=false
04-04 15:13:43.165: D/FragmentManager(592): View Hierarchy:
04-04 15:13:43.165: D/FragmentManager(592): com.android.internal.policy.impl.PhoneWindow$DecorView{4a2f9690 V.E..... ... 0,0-0,0}
04-04 15:13:43.175: D/FragmentManager(592): android.widget.FrameLayout{4a2f9fd0 V.ED.... ... 0,0-0,0}
04-04 15:13:43.175: D/FragmentManager(592): android.widget.LinearLayout{4a2facf0 V.E..... ... 0,0-0,0}
04-04 15:13:43.175: D/FragmentManager(592): android.support.v7.internal.widget.ActionBarContainer{4a2fb788 V.ED.... ... 0,0-0,0 #7f050021 app:id/action_bar_container}
04-04 15:13:43.175: D/FragmentManager(592): android.support.v7.internal.widget.ActionBarView{4a304150 V.E..... ... 0,0-0,0 #7f050022 app:id/action_bar}
04-04 15:13:43.175: D/FragmentManager(592): android.widget.LinearLayout{4a308a98 G.....C. ... 0,0-0,0}
04-04 15:13:43.175: D/FragmentManager(592): android.widget.ImageView{4a3093e8 G.ED.... ... 0,0-0,0 #7f050027 app:id/up}
04-04 15:13:43.175: D/FragmentManager(592): android.widget.LinearLayout{4a309618 V.E..... ... 0,0-0,0}
04-04 15:13:43.187: D/FragmentManager(592): android.widget.TextView{4a309a98 V.ED.... ... 0,0-0,0 #7f050028 app:id/action_bar_title}
04-04 15:13:43.187: D/FragmentManager(592): android.widget.TextView{4a30acd8 G.ED.... ... 0,0-0,0 #7f050029 app:id/action_bar_subtitle}
04-04 15:13:43.187: D/FragmentManager(592): android.support.v7.internal.widget.ActionBarView$HomeView{4a305088 VFE...C. ... 0,0-0,0}
04-04 15:13:43.187: D/FragmentManager(592): android.widget.ImageView{4a307388 G.ED.... ... 0,0-0,0 #7f050027 app:id/up}
04-04 15:13:43.187: D/FragmentManager(592): android.widget.ImageView{4a3078e8 V.ED.... ... 0,0-0,0 #7f050014 app:id/home}
04-04 15:13:43.198: D/FragmentManager(592): android.support.v7.internal.widget.ActionBarContextView{4a30b6a8 G.E..... ... 0,0-0,0 #7f050023 app:id/action_context_bar}
04-04 15:13:43.198: D/FragmentManager(592): android.widget.FrameLayout{4a30c040 V.ED.... ... 0,0-0,0 #1020002 android:id/content}
04-04 15:13:43.198: D/FragmentManager(592): android.widget.RelativeLayout{4a30d688 V.E..... ... 0,0-0,0}
04-04 15:13:43.205: D/FragmentManager(592): android.widget.TextView{4a30db18 V.ED.... ... 0,0-0,0 #7f05001a app:id/textView2}
04-04 15:13:43.205: D/FragmentManager(592): android.widget.Button{4a30e368 VFED..C. ... 0,0-0,0 #7f05001f app:id/button1}
04-04 15:13:43.205: D/FragmentManager(592): android.support.v7.internal.widget.ActionBarContainer{4a30c2e8 G.ED.... ... 0,0-0,0 #7f050024 app:id/split_action_bar}
04-04 15:13:43.205: D/AndroidRuntime(592): Shutting down VM
04-04 15:13:43.205: W/dalvikvm(592): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
04-04 15:13:43.215: E/AndroidRuntime(592): FATAL EXCEPTION: main
04-04 15:13:43.215: E/AndroidRuntime(592): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.passstrings/com.example.passstrings.MainActivity}: java.lang.IllegalArgumentException: No view found for id 0x7f050042 (com.example.passstrings:id/container) for fragment PlaceholderFragment{4a310490 #0 id=0x7f050042}
04-04 15:13:43.215: E/AndroidRuntime(592): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
04-04 15:13:43.215: E/AndroidRuntime(592): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
04-04 15:13:43.215: E/AndroidRuntime(592): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
04-04 15:13:43.215: E/AndroidRuntime(592): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
04-04 15:13:43.215: E/AndroidRuntime(592): at android.os.Handler.dispatchMessage(Handler.java:99)
04-04 15:13:43.215: E/AndroidRuntime(592): at android.os.Looper.loop(Looper.java:123)
04-04 15:13:43.215: E/AndroidRuntime(592): at android.app.ActivityThread.main(ActivityThread.java:4627)
04-04 15:13:43.215: E/AndroidRuntime(592): at java.lang.reflect.Method.invokeNative(Native Method)
04-04 15:13:43.215: E/AndroidRuntime(592): at java.lang.reflect.Method.invoke(Method.java:521)
04-04 15:13:43.215: E/AndroidRuntime(592): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
04-04 15:13:43.215: E/AndroidRuntime(592): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
04-04 15:13:43.215: E/AndroidRuntime(592): at dalvik.system.NativeStart.main(Native Method)
04-04 15:13:43.215: E/AndroidRuntime(592): Caused by: java.lang.IllegalArgumentException: No view found for id 0x7f050042 (com.example.passstrings:id/container) for fragment PlaceholderFragment{4a310490 #0 id=0x7f050042}
04-04 15:13:43.215: E/AndroidRuntime(592): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:930)
04-04 15:13:43.215: E/AndroidRuntime(592): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1115)
04-04 15:13:43.215: E/AndroidRuntime(592): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
04-04 15:13:43.215: E/AndroidRuntime(592): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1478)
04-04 15:13:43.215: E/AndroidRuntime(592): at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:570)
04-04 15:13:43.215: E/AndroidRuntime(592): at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1129)
04-04 15:13:43.215: E/AndroidRuntime(592): at android.app.Activity.performStart(Activity.java:3781)
04-04 15:13:43.215: E/AndroidRuntime(592): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2636)
04-04 15:13:43.215: E/AndroidRuntime(592): ... 11 more



The NullPointerExceptionis because you are trying to find R.id.textView2 and R.id.button1 in the activity_main.xml, and those ids are not there.


If you look carefully in the log there is a line that says where the NPE occurred, in your case is this one:


04-04 14:52:15.545: E/AndroidRuntime(369): Caused by: java.lang.NullPointerException
04-04 14:52:15.545: E/AndroidRuntime(369): at com.example.passstrings.MainActivity.onCreate(MainActivity.java:26)

And as you can see, in the line number 26 of the class MainActivity.java, specifically in the onCreate() method is where the error is happening, I'm almost certain the error is caused by the missing ids from the xml. To solve this you have to put the Button and TextView in the main_activity.xml with the ids specified in the code (R.id.textView2 and R.id.button1)



I'm using startActivityForResult between 2 classes "MainActivity" & "abc" class . The problem I have is the application keeps crashing upon launch and by reading LogCat I think the crash due to NPE " NullPointException" in MainActivity class (but I'm not sure) . I have searched for hours for solution but couldn't find one that solves my case .


1)MainActivity class :


package com.example.passstrings;


import android.support.v7.app.ActionBarActivity;
import android.support.v4.app.Fragment;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends ActionBarActivity {
Button bt1;
TextView tv2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

tv2 = (TextView) findViewById(R.id.textView2);
bt1=(Button) findViewById(R.id.button1);
bt1.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(MainActivity.this , abc.class);
startActivityForResult(intent , 0);

}
});



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

@Override
protected void onActivityResult(int requestCode , int resultCode , Intent data){
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK){
Intent intent = getIntent();
String pass= intent.getExtras().getString("key");
tv2.setText(pass);
}

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, 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_main, container, false);
return rootView;
}
}

}

2)abc class


package com.example.passstrings;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.RadioButton;
import android.widget.TextView;

public class abc extends Activity{
TextView tv1;
String setData;
RadioButton r1,r2,r3,r4;
Button bt2;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.abc);
r1 = (RadioButton) findViewById(R.id.radioButton1);
r2 = (RadioButton) findViewById(R.id.RadioButton01);
r3 = (RadioButton) findViewById(R.id.RadioButton02);
r4 = (RadioButton) findViewById(R.id.RadioButton03);
bt2.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub

if (r1.isChecked() || r2.isChecked() || r3.isChecked() == true){
setData ="Failed";
}else if (r3.isChecked() ==true){
setData="Passed";
}else{
setData="You didn't choose an answer";
}
Intent Int = new Intent(abc.this , MainActivity.class);
Int.putExtra("key", setData);
setResult(RESULT_OK , Int);
finish();






}

});
}
}

3)LogCat :


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

4)abc.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">

<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="23dp"
android:text="Which of the following vitamins helps clotting the blood : "
android:textSize="30sp" />

<RadioButton
android:id="@+id/radioButton1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView2"
android:layout_below="@+id/textView2"
android:layout_marginLeft="62dp"
android:layout_marginTop="14dp"
android:text="Vitamin A" />

<RadioButton
android:id="@+id/RadioButton03"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/RadioButton01"
android:layout_alignParentBottom="true"
android:layout_marginBottom="60dp"
android:text="None Of Above" />

<RadioButton
android:id="@+id/RadioButton01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/RadioButton03"
android:layout_alignRight="@+id/RadioButton02"
android:layout_marginBottom="26dp"
android:text="Vitamin C" />

<RadioButton
android:id="@+id/RadioButton02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/radioButton1"
android:layout_below="@+id/radioButton1"
android:layout_marginTop="16dp"
android:text="Vitamin D" />

<Button
android:id="@+id/button1"
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:text="Check"
android:textSize="30sp" />

</RelativeLayout>

5)fragment_main.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.ytdownload.MainActivity$PlaceholderFragment" >

>

<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="23dp"
android:text="Click Below to start the test . Please only choose on of the answers"
android:textSize="30sp" />

<Button
android:id="@+id/button1"
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textView2"
android:layout_centerHorizontal="true"
android:layout_marginTop="74dp"
android:text="Start"
android:textSize="30sp" />

</RelativeLayout>

6)Manifest :


<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.passstrings"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="19" />

<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.passstrings.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="com.example.passstrings.abc" />
</application>

</manifest>

7)activity_main.xml :


<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:ignore="MergeRootFrame"

tools:context="com.example.passstrings.MainActivity$PlaceholderFragment" >

>


</FrameLayout>

If I change setContentView in MainActivity to fragment it shows me this error in LogCat "although setting it to activity_main and editing fragment_main always worked me me"


04-04 15:13:42.995: I/dalvikvm(592): Could not find method android.content.pm.PackageManager.getActivityLogo, referenced from method android.support.v7.internal.widget.ActionBarView.<init>
04-04 15:13:42.995: W/dalvikvm(592): VFY: unable to resolve virtual method 320: Landroid/content/pm/PackageManager;.getActivityLogo (Landroid/content/ComponentName;)Landroid/graphics/drawable/Drawable;
04-04 15:13:42.995: D/dalvikvm(592): VFY: replacing opcode 0x6e at 0x008b
04-04 15:13:42.995: I/dalvikvm(592): Could not find method android.content.pm.ApplicationInfo.loadLogo, referenced from method android.support.v7.internal.widget.ActionBarView.<init>
04-04 15:13:42.995: W/dalvikvm(592): VFY: unable to resolve virtual method 316: Landroid/content/pm/ApplicationInfo;.loadLogo (Landroid/content/pm/PackageManager;)Landroid/graphics/drawable/Drawable;
04-04 15:13:42.995: D/dalvikvm(592): VFY: replacing opcode 0x6e at 0x0099
04-04 15:13:43.006: D/dalvikvm(592): VFY: dead code 0x008e-0092 in Landroid/support/v7/internal/widget/ActionBarView;.<init> (Landroid/content/Context;Landroid/util/AttributeSet;)V
04-04 15:13:43.006: D/dalvikvm(592): VFY: dead code 0x009c-00a0 in Landroid/support/v7/internal/widget/ActionBarView;.<init> (Landroid/content/Context;Landroid/util/AttributeSet;)V
04-04 15:13:43.135: E/FragmentManager(592): No view found for id 0x7f050042 (com.example.passstrings:id/container) for fragment PlaceholderFragment{4a310490 #0 id=0x7f050042}
04-04 15:13:43.135: E/FragmentManager(592): Activity state:
04-04 15:13:43.135: D/FragmentManager(592): Local FragmentActivity 4a2f4ae8 State:
04-04 15:13:43.135: D/FragmentManager(592): mCreated=truemResumed=false mStopped=false mReallyStopped=false
04-04 15:13:43.135: D/FragmentManager(592): mLoadersStarted=false
04-04 15:13:43.135: D/FragmentManager(592): Active Fragments in 4a2f5aa8:
04-04 15:13:43.135: D/FragmentManager(592): #0: PlaceholderFragment{4a310490 #0 id=0x7f050042}
04-04 15:13:43.151: D/FragmentManager(592): mFragmentId=#7f050042 mContainerId=#7f050042 mTag=null
04-04 15:13:43.151: D/FragmentManager(592): mState=0 mIndex=0 mWho=android:fragment:0 mBackStackNesting=0
04-04 15:13:43.155: D/FragmentManager(592): mAdded=true mRemoving=false mResumed=false mFromLayout=false mInLayout=false
04-04 15:13:43.155: D/FragmentManager(592): mHidden=false mDetached=false mMenuVisible=true mHasMenu=false
04-04 15:13:43.155: D/FragmentManager(592): mRetainInstance=false mRetaining=false mUserVisibleHint=true
04-04 15:13:43.155: D/FragmentManager(592): mFragmentManager=FragmentManager{4a2f5aa8 in MainActivity{4a2f4ae8}}
04-04 15:13:43.155: D/FragmentManager(592): mActivity=com.example.passstrings.MainActivity@4a2f4ae8
04-04 15:13:43.155: D/FragmentManager(592): Added Fragments:
04-04 15:13:43.165: D/FragmentManager(592): #0: PlaceholderFragment{4a310490 #0 id=0x7f050042}
04-04 15:13:43.165: D/FragmentManager(592): FragmentManager misc state:
04-04 15:13:43.165: D/FragmentManager(592): mActivity=com.example.passstrings.MainActivity@4a2f4ae8
04-04 15:13:43.165: D/FragmentManager(592): mContainer=android.support.v4.app.FragmentActivity$2@4a2f63b0
04-04 15:13:43.165: D/FragmentManager(592): mCurState=2 mStateSaved=false mDestroyed=false
04-04 15:13:43.165: D/FragmentManager(592): View Hierarchy:
04-04 15:13:43.165: D/FragmentManager(592): com.android.internal.policy.impl.PhoneWindow$DecorView{4a2f9690 V.E..... ... 0,0-0,0}
04-04 15:13:43.175: D/FragmentManager(592): android.widget.FrameLayout{4a2f9fd0 V.ED.... ... 0,0-0,0}
04-04 15:13:43.175: D/FragmentManager(592): android.widget.LinearLayout{4a2facf0 V.E..... ... 0,0-0,0}
04-04 15:13:43.175: D/FragmentManager(592): android.support.v7.internal.widget.ActionBarContainer{4a2fb788 V.ED.... ... 0,0-0,0 #7f050021 app:id/action_bar_container}
04-04 15:13:43.175: D/FragmentManager(592): android.support.v7.internal.widget.ActionBarView{4a304150 V.E..... ... 0,0-0,0 #7f050022 app:id/action_bar}
04-04 15:13:43.175: D/FragmentManager(592): android.widget.LinearLayout{4a308a98 G.....C. ... 0,0-0,0}
04-04 15:13:43.175: D/FragmentManager(592): android.widget.ImageView{4a3093e8 G.ED.... ... 0,0-0,0 #7f050027 app:id/up}
04-04 15:13:43.175: D/FragmentManager(592): android.widget.LinearLayout{4a309618 V.E..... ... 0,0-0,0}
04-04 15:13:43.187: D/FragmentManager(592): android.widget.TextView{4a309a98 V.ED.... ... 0,0-0,0 #7f050028 app:id/action_bar_title}
04-04 15:13:43.187: D/FragmentManager(592): android.widget.TextView{4a30acd8 G.ED.... ... 0,0-0,0 #7f050029 app:id/action_bar_subtitle}
04-04 15:13:43.187: D/FragmentManager(592): android.support.v7.internal.widget.ActionBarView$HomeView{4a305088 VFE...C. ... 0,0-0,0}
04-04 15:13:43.187: D/FragmentManager(592): android.widget.ImageView{4a307388 G.ED.... ... 0,0-0,0 #7f050027 app:id/up}
04-04 15:13:43.187: D/FragmentManager(592): android.widget.ImageView{4a3078e8 V.ED.... ... 0,0-0,0 #7f050014 app:id/home}
04-04 15:13:43.198: D/FragmentManager(592): android.support.v7.internal.widget.ActionBarContextView{4a30b6a8 G.E..... ... 0,0-0,0 #7f050023 app:id/action_context_bar}
04-04 15:13:43.198: D/FragmentManager(592): android.widget.FrameLayout{4a30c040 V.ED.... ... 0,0-0,0 #1020002 android:id/content}
04-04 15:13:43.198: D/FragmentManager(592): android.widget.RelativeLayout{4a30d688 V.E..... ... 0,0-0,0}
04-04 15:13:43.205: D/FragmentManager(592): android.widget.TextView{4a30db18 V.ED.... ... 0,0-0,0 #7f05001a app:id/textView2}
04-04 15:13:43.205: D/FragmentManager(592): android.widget.Button{4a30e368 VFED..C. ... 0,0-0,0 #7f05001f app:id/button1}
04-04 15:13:43.205: D/FragmentManager(592): android.support.v7.internal.widget.ActionBarContainer{4a30c2e8 G.ED.... ... 0,0-0,0 #7f050024 app:id/split_action_bar}
04-04 15:13:43.205: D/AndroidRuntime(592): Shutting down VM
04-04 15:13:43.205: W/dalvikvm(592): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
04-04 15:13:43.215: E/AndroidRuntime(592): FATAL EXCEPTION: main
04-04 15:13:43.215: E/AndroidRuntime(592): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.passstrings/com.example.passstrings.MainActivity}: java.lang.IllegalArgumentException: No view found for id 0x7f050042 (com.example.passstrings:id/container) for fragment PlaceholderFragment{4a310490 #0 id=0x7f050042}
04-04 15:13:43.215: E/AndroidRuntime(592): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
04-04 15:13:43.215: E/AndroidRuntime(592): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
04-04 15:13:43.215: E/AndroidRuntime(592): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
04-04 15:13:43.215: E/AndroidRuntime(592): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
04-04 15:13:43.215: E/AndroidRuntime(592): at android.os.Handler.dispatchMessage(Handler.java:99)
04-04 15:13:43.215: E/AndroidRuntime(592): at android.os.Looper.loop(Looper.java:123)
04-04 15:13:43.215: E/AndroidRuntime(592): at android.app.ActivityThread.main(ActivityThread.java:4627)
04-04 15:13:43.215: E/AndroidRuntime(592): at java.lang.reflect.Method.invokeNative(Native Method)
04-04 15:13:43.215: E/AndroidRuntime(592): at java.lang.reflect.Method.invoke(Method.java:521)
04-04 15:13:43.215: E/AndroidRuntime(592): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
04-04 15:13:43.215: E/AndroidRuntime(592): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
04-04 15:13:43.215: E/AndroidRuntime(592): at dalvik.system.NativeStart.main(Native Method)
04-04 15:13:43.215: E/AndroidRuntime(592): Caused by: java.lang.IllegalArgumentException: No view found for id 0x7f050042 (com.example.passstrings:id/container) for fragment PlaceholderFragment{4a310490 #0 id=0x7f050042}
04-04 15:13:43.215: E/AndroidRuntime(592): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:930)
04-04 15:13:43.215: E/AndroidRuntime(592): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1115)
04-04 15:13:43.215: E/AndroidRuntime(592): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
04-04 15:13:43.215: E/AndroidRuntime(592): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1478)
04-04 15:13:43.215: E/AndroidRuntime(592): at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:570)
04-04 15:13:43.215: E/AndroidRuntime(592): at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1129)
04-04 15:13:43.215: E/AndroidRuntime(592): at android.app.Activity.performStart(Activity.java:3781)
04-04 15:13:43.215: E/AndroidRuntime(592): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2636)
04-04 15:13:43.215: E/AndroidRuntime(592): ... 11 more


The NullPointerExceptionis because you are trying to find R.id.textView2 and R.id.button1 in the activity_main.xml, and those ids are not there.


If you look carefully in the log there is a line that says where the NPE occurred, in your case is this one:


04-04 14:52:15.545: E/AndroidRuntime(369): Caused by: java.lang.NullPointerException
04-04 14:52:15.545: E/AndroidRuntime(369): at com.example.passstrings.MainActivity.onCreate(MainActivity.java:26)

And as you can see, in the line number 26 of the class MainActivity.java, specifically in the onCreate() method is where the error is happening, I'm almost certain the error is caused by the missing ids from the xml. To solve this you have to put the Button and TextView in the main_activity.xml with the ids specified in the code (R.id.textView2 and R.id.button1)


0 commentaires:

Enregistrer un commentaire