My first app crashes on button click

I've tried many times to make the app from the MyFirstApp tutorial on developer.android ( https://developer.android.com/training/basics/firstapp/index.html ). I am testing my code on a Nexus 4 device running Android Android 4.4.2

My + problem is that the app crashes every time I press the submit button and DisplayMessageActivity starts. The most common reason for this sample app to fail is that DisplayMessageActivity was not included in the Android manifest file, but it is definitely included in mine. I don't know what is causing this crash, so here is my complete code including Logcat.

AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myfirstapp"
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.myfirstapp.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.myfirstapp.DisplayMessageActivity"
        android:label="@string/title_activity_display_message"
        android:parentActivityName="com.example.myfirstapp.MainActivity" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.example.myfirstapp.MainActivity" />
    </activity>
</application>

      

MainActivity.java

package com.example.myfirstapp;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v7.app.ActionBarActivity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;

public class MainActivity extends ActionBarActivity {

public final static String EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE";

@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();
    }
}

@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;
    }
}

public void sendMessage(View view) {
    Intent intent = new Intent(this, DisplayMessageActivity.class);
    EditText editText = (EditText) findViewById(R.id.enter_message);
    String message = editText.getText().toString();
    intent.putExtra(EXTRA_MESSAGE,message);
    startActivity(intent);
}
 }

      

DisplayMessageActivity.java

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

 public class DisplayMessageActivity extends ActionBarActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    Intent intent = getIntent();
    String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);

    TextView textView = new TextView(this);
    textView.setTextSize(40);
    textView.setText(message);      
    setContentView(textView);

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

      

activity_main.xml

<LinearLayout 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"
    android:orientation="horizontal"
    tools:context="com.example.myfirstapp.MainActivity"
    tools:ignore="MergeRootFrame" >

    <EditText 
        android:id="@+id/enter_message"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:hint="@string/enter_message"/>

   <Button
       android:id="@+id/button_send"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="@string/button_send"
       android:onClick="sendMessage"/>

</LinearLayout>

      

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.myfirstapp.MainActivity$PlaceholderFragment" >

</RelativeLayout>

      

activity_display_message.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:context="com.example.myfirstapp.DisplayMessageActivity"
    tools:ignore="MergeRootFrame" />

      

fragment_display_message.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.myfirstapp.DisplayMessageActivity$PlaceholderFragment" >
</RelativeLayout>

      

LogCat

03-18 15:27:35.195: E/AndroidRuntime(12382): FATAL EXCEPTION: main
03-18 15:27:35.195: E/AndroidRuntime(12382): Process: com.example.myfirstapp, PID: 12382
03-18 15:27:35.195: E/AndroidRuntime(12382): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.myfirstapp/com.example.myfirstapp.DisplayMessageActivity}: java.lang.IllegalArgumentException: No view found for id 0x7f05003c (com.example.myfirstapp:id/container) for fragment PlaceholderFragment{41e7f580 #0 id=0x7f05003c}
03-18 15:27:35.195: E/AndroidRuntime(12382):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
03-18 15:27:35.195: E/AndroidRuntime(12382):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
03-18 15:27:35.195: E/AndroidRuntime(12382):    at android.app.ActivityThread.access$800(ActivityThread.java:135)
03-18 15:27:35.195: E/AndroidRuntime(12382):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
03-18 15:27:35.195: E/AndroidRuntime(12382):    at android.os.Handler.dispatchMessage(Handler.java:102)
03-18 15:27:35.195: E/AndroidRuntime(12382):    at android.os.Looper.loop(Looper.java:136)
03-18 15:27:35.195: E/AndroidRuntime(12382):    at android.app.ActivityThread.main(ActivityThread.java:5017)
03-18 15:27:35.195: E/AndroidRuntime(12382):    at java.lang.reflect.Method.invokeNative(Native Method)
03-18 15:27:35.195: E/AndroidRuntime(12382):    at java.lang.reflect.Method.invoke(Method.java:515)
03-18 15:27:35.195: E/AndroidRuntime(12382):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
03-18 15:27:35.195: E/AndroidRuntime(12382):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
03-18 15:27:35.195: E/AndroidRuntime(12382):    at dalvik.system.NativeStart.main(Native Method)
03-18 15:27:35.195: E/AndroidRuntime(12382): Caused by: java.lang.IllegalArgumentException: No view found for id 0x7f05003c (com.example.myfirstapp:id/container) for fragment PlaceholderFragment{41e7f580 #0 id=0x7f05003c}
03-18 15:27:35.195: E/AndroidRuntime(12382):    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:919)
03-18 15:27:35.195: E/AndroidRuntime(12382):    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)
03-18 15:27:35.195: E/AndroidRuntime(12382):    at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
03-18 15:27:35.195: E/AndroidRuntime(12382):    at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1467)
03-18 15:27:35.195: E/AndroidRuntime(12382):    at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:570)
03-18 15:27:35.195: E/AndroidRuntime(12382):    at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1171)
03-18 15:27:35.195: E/AndroidRuntime(12382):    at android.app.Activity.performStart(Activity.java:5241)
03-18 15:27:35.195: E/AndroidRuntime(12382):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2168)
03-18 15:27:35.195: E/AndroidRuntime(12382):    ... 11 more

      

It would be great if someone could notice the error that is causing the crash and I could help with the EditText. Thank you very much in advance.

+1


source to share


1 answer


Your problem is here ( DisplayMessageActivity

):

@Override
protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);

   Intent intent = getIntent();
   String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);

   TextView textView = new TextView(this);
   textView.setTextSize(40);
   textView.setText(message);      
   setContentView(textView);

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

      



you are trying to add Fragment

to R.id.container

which is not part of the view hierarchy Activity'

as the only thing it contains isTextView

+1


source







All Articles