অন্য ক্রিয়াকলাপ দেখানোর জন্য অ্যানড্রয়েড অ্যাপ্লিকেশনটিতে ইনটেন্ট ব্যবহার করা


196

আমার অ্যান্ড্রয়েড অ্যাপ্লিকেশনটিতে, আমার দুটি ক্রিয়াকলাপ ক্লাস রয়েছে। আমার প্রথমটিতে একটি বোতাম আছে এবং এটি ক্লিক করার পরে আমি দ্বিতীয়টি দেখতে চাই, তবে আমি একটি ত্রুটি পেয়েছি। এখানে ক্লাসগুলি রয়েছে:

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: স্পষ্টত ক্রিয়াকলাপ শ্রেণি to শ্রেণীর নাম find সন্ধান করতে অক্ষম আপনি কী আপনার অ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএলে এই ক্রিয়াকলাপটি ঘোষণা করেছেন?
তাই স্কোয়াড

8
এটি একটি খুব সাধারণ বাগ যা লোকেরা তাদের ক্রিয়াকলাপটিকে ম্যানিফেস্ট.এক্সএমএল এ যুক্ত করতে ভুলে যায় তবে এটি স্বয়ংক্রিয়ভাবে প্রবেশ করার উপায় থাকা উচিত।
এজেড_

উত্তর:


177

সমস্যাটি ছিল অর্ডারস্ক্রিনটি অ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএলে যুক্তActivity করা হয়নি । একবার আমি যুক্ত করেছি যে অ্যাপ্লিকেশন নোড হিসাবে, এটি সঠিকভাবে কাজ করেছে।

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

কেন এটি প্রয়োজন তা আপনি ব্যাখ্যা করতে পারেন?
লুই রাইস

@ লুইসরিস সমস্ত ক্রিয়াকলাপ ম্যানিফেস্ট ফাইলে ঘোষণা করা দরকার। Descriptionএখানে বিভাগটি দেখুন : বিকাশকারী
অ্যান্ড্রয়েড.com

161

আপনার অ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএলে এই লাইনটি যুক্ত করুন:

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

7
লোকেরা কেন কয়েক মাস পর থেকে এই উত্তরটিকে সমর্থন করেছিল?
জয়কুল

4
@ জয়কুল গৃহীত উত্তরে 2013 থেকে সম্পাদনাটি দেখুন
পোমার

16

---- ফার্স্টঅ্যাক্টিভিটি.জভা -----

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

 }
}

--- অ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএল ----

    <?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();

প্রসঙ্গ: বর্তমান ক্রিয়াকলাপ প্রসঙ্গে উল্লেখ করুন,

আপনি অ্যান্ড্রয়েড ম্যানিফেস্ট ফাইলটিতে কার্যকলাপ যোগ করেছেন তা নিশ্চিত করুন।

অ্যান্ড্রয়েড ম্যানিফেস্ট ফাইলে ক্রিয়াকলাপ যুক্ত করার জন্য নিম্নলিখিত কোড অনুসরণ করা হচ্ছে

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

java.lang.IllegalStateException: ফ্র্যাগমেন্ট getUserNumber {536bc00c Ac ক্রিয়াকলাপের সাথে সংযুক্ত নয়।
ইমান মারাশি

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

কেবল যে ক্রিয়ায় আমরা স্যুইচ করতে চাই তা কেবল মেনিফেস্ট ফাইলে রাখা উচিত


3

আপনি যখন অ্যান্ড্রয়েড ফাইলে কোনও ক্রিয়াকলাপ তৈরি করেন আপনার এটিকে AndroidManLive.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);

            }
        });

আপনার ম্যানিফেস্ট ফাইলে সেকেন্ডঅ্যাক্টিভিটি ক্লাস যুক্ত করুন।
হিরেন প্যাটেল

টাইপ ভিউতে সেটঅনক্লিকলিস্টার (View.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 () পদ্ধতিটি অপরিজ্ঞাত?

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.