简体   繁体   中英

onCreate method not called in android

I have created 2 activities.When i call second activity from first via intent then onCreate method of second activity does not called.Although first activity's onCreate method is called normally as it should be. Below is the code for first activity.

package com.webesperto.webespertofirstapp;

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

public class MainActivity extends Activity implements OnClickListener {

    int counter;
    Button add, sub;
    TextView tView;

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

        counter = 0;
        add = (Button) findViewById(R.id.bAdd);
        sub = (Button) findViewById(R.id.bSub);
        tView = (TextView) findViewById(R.id.textView1);

        // Intent in = new Intent(AC);

        add.setOnClickListener(this);

        sub.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        switch (v.getId()) {
        case R.id.bAdd:         
            tView.setText(++counter + "");
            try {               
            Intent nextIntentView = new Intent(MainActivity.this, ShowValueActivity.class);
            nextIntentView.putExtra("key", "counter");
            startActivity(nextIntentView);
            }
            catch (Exception e) {
                e.printStackTrace();
            }
            break;

        case R.id.bSub:
            tView.setText(--counter + "");
            break;
        default:
            break;
        }   

    }

}

Code for second activity.

package com.webesperto.webespertofirstapp;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;

public class ShowValue extends Activity {

    TextView tv_showValue1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.show_value);
        tv_showValue1 = (TextView) findViewById(R.id.tv_showValue);
        Intent gotIntent = (Intent) this.getIntent();
        Bundle gotBundle = gotIntent.getExtras();
        tv_showValue1.setText(gotBundle.getString("key"));
    }

}

Manifest.xml

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

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

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.webesperto.webespertofirstapp.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=".ShowValueActivity"
            android:label="@string/title_activity_show_value" >
        </activity>
    </application>

</manifest>

you have

   <activity
        android:name=".ShowValueActivity"
        android:label="@string/title_activity_show_value" >
    </activity>

instead of

<activity
        android:name=".ShowValue"
        android:label="@string/title_activity_show_value" >
    </activity>

Since your code reads

public class ShowValue extends Activity {

Though, why doesnt your application crash saying NoActivityFoundException ??

please have a look on manifest change

<activity
        android:name=".ShowValueActivity"
        android:label="@string/title_activity_show_value" >
    </activity>

to

<activity
        android:name=".ShowValue"
        android:label="@string/title_activity_show_value" >
    </activity>

yours manifest should be like this

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

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

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.webesperto.webespertofirstapp.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=".ShowValue"
        android:label="@string/title_activity_show_value" >
        </activity>
    </application>

</manifest>

Change your Second Activity name in class file like this:

package com.webesperto.webespertofirstapp;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;

public class ShowValueActivity extends Activity {

TextView tv_showValue1;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.show_value);
    tv_showValue1 = (TextView) findViewById(R.id.tv_showValue);
    Intent gotIntent = (Intent) this.getIntent();
    Bundle gotBundle = gotIntent.getExtras();
    tv_showValue1.setText(gotBundle.getString("key"));
}

}

It will work:)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM