किसी अन्य गतिविधि को दिखाने के लिए Android एप्लिकेशन में इरादे का उपयोग करना


196

मेरे Android एप्लिकेशन में, मेरे पास दो गतिविधि कक्षाएं हैं। मेरे पास पहले एक बटन है और मैं दूसरे को दिखाना चाहता हूं जब इसे क्लिक किया जाता है, लेकिन मुझे एक त्रुटि मिलती है। यहाँ कक्षाएं हैं:

public class FirstActivity extends Activity {

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Button orderButton = (Button)findViewById(R.id.order);

    orderButton.setOnClickListener(new View.OnClickListener() {

      @Override
      public void onClick(View view) {
        Intent intent = new Intent(FirstActivity.this, OrderScreen.class);
        startActivity(intent);
      }

    });
  }
}

दूसरा वर्ग जो बटन क्लिक करने पर दिखाना चाहिए, लेकिन कभी ऐसा नहीं करता:

public class OrderScreen extends Activity {

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.order);

    Button orderButton = (Button) findViewById(R.id.end);

    orderButton.setOnClickListener(new View.OnClickListener() {

      @Override
      public void onClick(View view) {
        finish();
      }

    });
  }
}

मैं एक बटन कैसे बनाऊंगा जो दूसरी गतिविधि दिखाएगा?


जब आप संकलन करते हैं या समय चलाते हैं तो क्या आपको कोई त्रुटि मिलती है? किसी भी स्थिति में, त्रुटि क्या है?
क्विंटन रॉबिन्सन

3
यह एक रन टाइम त्रुटि थी। एमुलेटर ने जेनेरिक को "एप्लिकेशन को अप्रत्याशित रूप से बंद कर दिया है" त्रुटि दी है, लेकिन डीबगर का उपयोग करके, उसने "android.content.ActivityNotFoundException: एक स्पष्ट गतिविधि वर्ग ढूँढने में असमर्थ है {वर्ग नाम} क्या आपने अपने AndroidManifest.xml में इस गतिविधि की घोषणा की है?
ताई चुकता

8
यह एक बहुत ही सामान्य बग है जिसे लोग अपनी गतिविधि को Manifest.xml में जोड़ना भूल जाते हैं, लेकिन इसे स्वचालित रूप से दर्ज करने का तरीका होना चाहिए।
AZ_

जवाबों:


177

समस्या यह थी कि ऑर्डरस्क्रीन Activity को AndroidManifest.xml में नहीं जोड़ा गया था । एक बार जब मैंने इसे एप्लिकेशन नोड के रूप में जोड़ा, तो यह ठीक से काम कर रहा था।

<activity android:name=".OrderScreen" />

क्या आप बता सकते हैं कि इसकी आवश्यकता क्यों है?
लुई राइस

@LouisRhys सभी गतिविधियों को प्रकट फ़ाइल में घोषित करने की आवश्यकता है। Descriptionयहाँ देखें अनुभाग: developer.android.com/guide/topics/manifest/…
ataulm

161

इस लाइन को अपने AndroidManifest.xml में जोड़ें:

<activity android:name=".OrderScreen" /> 

7
महीनों बाद लोगों ने इस जवाब को क्यों दिया?
जयकुल

4
@ जेकुल ने 2013 से संपादित उत्तर को देखें
पोम्बे

16

---- FirstActivity.java -----

    package com.mindscripts.eid;
    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;

public class FirstActivity extends Activity {

protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    Button orderButton = (Button) findViewById(R.id.order);
    orderButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            Intent intent = new Intent(FirstActivity.this,OrderScreen.class);
            startActivity(intent);
        }
    });

 }
}

--- आदेशस्क्रीन। जावा ---

    package com.mindscripts.eid;

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



    public class OrderScreen extends Activity {
@Override



protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.second_class);
    Button orderButton = (Button) findViewById(R.id.end);
    orderButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            finish();
        }
    });

 }
}

--- AndroidManifest.xml ----

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


<application android:icon="@drawable/icon" android:label="@string/app_name">
    <activity android:name=".FirstActivity"
              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=".OrderScreen"></activity>
</application>


1
आप ओपी के लाभ के लिए अपने जवाब को स्पष्ट करना चाह सकते हैं
लुका

4

इस कोड का उपयोग करें:

Intent intent=new Intent(context,SecondActivty.class);
startActivity(intent);
finish();

संदर्भ: वर्तमान गतिविधि संदर्भ देखें,

कृपया सुनिश्चित करें कि आपने Android मेनिफ़ेस्ट फ़ाइल में गतिविधि जोड़ दी है।

Android मेनिफ़ेस्ट फ़ाइल में गतिविधि जोड़ने के लिए निम्न कोड

<Activity name=".SecondActivity">
</Activity>

java.lang.IllegalStateException: Fragment GetUserNumber {536bc00c} गतिविधि में संलग्न नहीं है।
इमान मराशी

4
<activity android:name="[packagename optional].ActivityClassName"></activity>

बस उस गतिविधि को जोड़ना जो हम स्विच करना चाहते हैं, उसे मैनिफ़ेस्ट फ़ाइल में रखा जाना चाहिए


3

जब आप Android फ़ाइल में कोई गतिविधि बनाते हैं तो आपको उसे AndroidManifest.xml में निर्दिष्ट करना होगा

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

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
    <activity
        android:name=".MyCreativityActivity"
        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=".OrderScreen"></activity>


</application>


3
b1 = (Button) findViewById(R.id.click_me);
        b1.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {

                Intent i = new Intent(MainActivity.this, SecondActivity.class);
                startActivity(i);

            }
        });

अपनी menifest फ़ाइल में SecondActivity क्लास जोड़ें।
हिरेन पटेल

प्रकार में देखें विधि setOnClickListener (View.OnClickListener) तर्क के लिए लागू नहीं है (नया OnClickListener () {})?


2

मेनिफेस्ट में

<activity android:name=".OrderScreen" />

जावा कोड में जहां आपको आशय कोड रखना है

startActivity(new Intent(CurrentActivity.this, OrderScreen.class);

1
आप इसमें एक क्लोजिंग ब्रैकेट मिस कर रहे हैं, startActivityयह इस तरह से होना चाहिए:startActivity(new Intent(CurrentActivity.this, OrderScreen.class));
स्ट्रेंज

1

आप उस दृश्य के संदर्भ का उपयोग कर सकते हैं जिसने कॉलिंग की थी। उदाहरण:

Button orderButton = (Button)findViewById(R.id.order);

orderButton.setOnClickListener(new View.OnClickListener() {

  @Override
  public void onClick(View view) {
    Intent intent = new Intent(/*FirstActivity.this*/ view.getContext(), OrderScreen.class);
    startActivity(intent);
  }

});

विधि getContext () प्रकार MainActivity के लिए अपरिभाषित है?

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.