बटन क्लिक पर नई गतिविधि कैसे शुरू करें


625

एंड्रॉइड एप्लिकेशन में, जब आप किसी अन्य गतिविधि के बटन पर क्लिक करते हैं, और आप इन दो गतिविधियों के बीच डेटा कैसे पास करते हैं, तो आप एक नई गतिविधि (GUI) कैसे शुरू करते हैं?

जवाबों:


1115

आसान।

Intent myIntent = new Intent(CurrentActivity.this, NextActivity.class);
myIntent.putExtra("key", value); //Optional parameters
CurrentActivity.this.startActivity(myIntent);

एक्स्ट्रा कलाकार दूसरी तरफ से प्राप्त होते हैं:

@Override
protected void onCreate(Bundle savedInstanceState) {
    Intent intent = getIntent();
    String value = intent.getStringExtra("key"); //if it's a string you stored.
}

AndroidManifest.xml में अपनी नई गतिविधि जोड़ना न भूलें:

<activity android:label="@string/app_name" android:name="NextActivity"/>

18
बटन क्लिक भाग कहाँ है? (बटन क्लिक → अगली गतिविधि के लिए संक्रमण)
जॉनी

4
@ जॉनी: यहां एक बटन क्लिक का उदाहरण दिया गया है। stackoverflow.com/a/7722428/442512
इमैनुएल

8
क्या कोई अंतर है CurrentActivity.this.startActivity(myIntent)और startActivity(myIntent)?
भ्रमित

5
हाँ, आसान लोल। वास्तव में टाइप किए गए कोड की तुलना में अधिक कोडनेम है। सभी xml इंटरफ़ेस और .java कोड कहाँ गायब है? डाउनवोट
तरल कोर

111
तरल, क्या आप उसे एक एपीके में पैक करना चाहेंगे? ;)
केसी मरे

60

व्यूपर्सन गतिविधि के लिए एक इरादा बनाएं और व्यक्ति को (डेटाबेस लुकअप के लिए, उदाहरण के लिए) पास करें।

Intent i = new Intent(getBaseContext(), ViewPerson.class);                      
i.putExtra("PersonID", personID);
startActivity(i);

फिर व्यूपर्सन गतिविधि में, आप अतिरिक्त डेटा का बंडल प्राप्त कर सकते हैं, सुनिश्चित करें कि यह शून्य नहीं है (यदि आप कभी-कभी डेटा पास नहीं करते हैं), तो डेटा प्राप्त करें।

Bundle extras = getIntent().getExtras();
if(extras !=null)
{
     personID = extras.getString("PersonID");
}

अब अगर आपको दो गतिविधियों के बीच डेटा साझा करने की आवश्यकता है, तो आपके पास एक ग्लोबल सिंगलटन भी हो सकता है।

public class YourApplication extends Application 
{     
     public SomeDataClass data = new SomeDataClass();
}

फिर इसे किसी भी गतिविधि में कॉल करें:

YourApplication appState = ((YourApplication)this.getApplication());
appState.data.CallSomeFunctionHere(); // Do whatever you need to with data here.  Could be setter/getter or some other type of logic

58

वर्तमान प्रतिक्रियाएं महान हैं लेकिन शुरुआती लोगों के लिए अधिक व्यापक जवाब की आवश्यकता है। एंड्रॉइड में एक नई गतिविधि शुरू करने के लिए 3 अलग-अलग तरीके हैं, और वे सभी Intentवर्ग का उपयोग करते हैं ; आशय | Android डेवलपर्स

  1. का उपयोग करते हुए onClickबटन विशेषता का । (प्रारंभिक)
  2. असाइनमेंट ए OnClickListener()एक अनाम वर्ग के माध्यम से । (मध्यवर्ती)
  3. switchकथन का उपयोग करते हुए गतिविधि विस्तृत इंटरफ़ेस विधि । (समर्थक)

यहाँ लिंक हैयदि आप साथ चलना चाहते हैं तो मेरे उदाहरण दिया गया है:

1. का उपयोग करना onClick बटन विशेषता का । (प्रारंभिक)

बटन में एक onClickविशेषता है जो .xml फ़ाइल के भीतर पाई जाती है:

<Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:onClick="goToAnActivity"
    android:text="to an activity" />

<Button
    android:id="@+id/button2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:onClick="goToAnotherActivity"
    android:text="to another activity" />

जावा वर्ग में:

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

public void goToAnActivity(View view) {
    Intent intent = new Intent(this, AnActivity.class);
    startActivity(intent);
}

public void goToAnotherActivity(View view) {
    Intent intent = new Intent(this, AnotherActivity.class);
    startActivity(intent);
}

फायदा : मक्खी, मॉड्यूलर पर बनाना आसान है, और आसानी onClickसे एक ही इरादे से कई सेट कर सकते हैं ।

नुकसान : समीक्षा करते समय कठिन पठनीयता।

2. OnClickListener()एक अनाम वर्ग के माध्यम से असाइन करना । (मध्यवर्ती)

यह तब होता है जब आप setOnClickListener()प्रत्येक को एक अलग सेट करते हैं buttonऔर प्रत्येक onClick()को अपनी मर्जी से ओवरराइड करते हैं ।

जावा वर्ग में:

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

        Button button1 = (Button) findViewById(R.id.button1);
        button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(view.getContext(), AnActivity.class);
                view.getContext().startActivity(intent);}
            });

        Button button2 = (Button) findViewById(R.id.button2);
        button2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(view.getContext(), AnotherActivity.class);
                view.getContext().startActivity(intent);}
            });

फायदा : मक्खी पर बनाना आसान है।

नुकसान : बहुत सारी अनाम कक्षाएं होंगी, जिनकी समीक्षा करते समय पठनीयता मुश्किल हो जाएगी।

3. switchकथन का उपयोग करते हुए गतिविधि विस्तृत इंटरफ़ेस विधि । (समर्थक)

यह तब होता है जब आप switchअपने बटनों के लिए स्टेटमेंट का उपयोग करते हैंonClick() सभी गतिविधि के बटन को प्रबंधित करने के विधि के हैं।

जावा वर्ग में:

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

    Button button1 = (Button) findViewById(R.id.button1);
    Button button2 = (Button) findViewById(R.id.button2);
    button1.setOnClickListener(this);
    button2.setOnClickListener(this);
}

@Override
public void onClick(View view) {
    switch (view.getId()){
        case R.id.button1:
            Intent intent1 = new Intent(this, AnActivity.class);
            startActivity(intent1);
            break;
        case R.id.button2:
            Intent intent2 = new Intent(this, AnotherActivity.class);
            startActivity(intent2);
            break;
        default:
            break;
    }

लाभ : आसान बटन प्रबंधन क्योंकि सभी बटन के इरादे एक ही onClick()विधि में पंजीकृत हैं


प्रश्न के दूसरे भाग के लिए, डेटा पास करना, कृपया देखें कि मैं एंड्रॉइड एप्लिकेशन में गतिविधियों के बीच डेटा कैसे पास करूं?


बहुत बढ़िया जवाब, थैंक्यू! क्या आप किसी भी सुझाव का उपयोग करके किसी भी प्रदर्शन दंड के बारे में जानते हैं?
लेमिनास

3
# 3 "समर्थक" नहीं है। यह कम से कम पठनीय और प्राप्य विकल्प है, और इसे देखने वाले पहले अनुभवी डेवलपर द्वारा # 1 या # 2 में रिफलेक्ट किया जाएगा। (या वे बटरकाइफ़ का उपयोग करेंगे, जो कि स्टेरॉयड पर # 1 विकल्प है।)
केविन क्रुमविडे

मुझे लगता है कि प्रो प्रोग्रामर को # 3 बिल्कुल पसंद नहीं है। डाल, Idk, 10 बटन क्लिक हैंडलर 1 विधि के अंदर एक बुरा सपना है और बिल्कुल भी पेशेवर नहीं है। कोड की zilion लाइनों के साथ विधि आपको पेशेवर नहीं बनाती है। KISS
मेहदी देघानी

3 निश्चित रूप से "समर्थक" नहीं है
कैसर कीस्टर

36

जब उपयोगकर्ता बटन पर क्लिक करता है, तो सीधे XML के अंदर

<Button
         android:id="@+id/button"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:text="TextButton"
         android:onClick="buttonClickFunction"/>

विशेषता का उपयोग करके android:onClickहम उस विधि नाम की घोषणा करते हैं जिसे मूल गतिविधि पर उपस्थित होना है। तो मुझे इस तरह से अपनी गतिविधि के अंदर यह विधि बनानी होगी:

public void buttonClickFunction(View v)
{
            Intent intent = new Intent(getApplicationContext(), Your_Next_Activity.class);
            startActivity(intent);
}

19
Intent iinent= new Intent(Homeactivity.this,secondactivity.class);
startActivity(iinent);

2
यह केवल एक आंशिक उत्तर है। इसके अलावा यह पर्याप्त नहीं है, अर्थात यह परियोजना में अतिरिक्त संशोधनों के बिना काम नहीं करेगा।
andr

10
    Intent in = new Intent(getApplicationContext(),SecondaryScreen.class);    
    startActivity(in);

    This is an explicit intent to start secondscreen activity.

8

इम्मानुएल,

मुझे लगता है कि गतिविधि शुरू करने से पहले अतिरिक्त जानकारी डालनी चाहिए अन्यथा डेटा अभी तक उपलब्ध नहीं होगा यदि आप इसे NextActivity की ऑनक्रिट विधि में एक्सेस कर रहे हैं।

Intent myIntent = new Intent(CurrentActivity.this, NextActivity.class);

myIntent.putExtra("key", value);

CurrentActivity.this.startActivity(myIntent);

7

भेजने की गतिविधि से निम्नलिखित कोड का प्रयास करें

   //EXTRA_MESSAGE is our key and it's value is 'packagename.MESSAGE'
    public static final String EXTRA_MESSAGE = "packageName.MESSAGE";

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

        //Here we declare our send button
        Button sendButton = (Button) findViewById(R.id.send_button);
        sendButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //declare our intent object which takes two parameters, the context and the new activity name

                // the name of the receiving activity is declared in the Intent Constructor
                Intent intent = new Intent(getApplicationContext(), NameOfReceivingActivity.class);

                String sendMessage = "hello world"
                //put the text inside the intent and send it to another Activity
                intent.putExtra(EXTRA_MESSAGE, sendMessage);
                //start the activity
                startActivity(intent);

            }

प्राप्त गतिविधि से निम्नलिखित कोड आज़माएं:

   protected void onCreate(Bundle savedInstanceState) {
 //use the getIntent()method to receive the data from another activity
 Intent intent = getIntent();

//extract the string, with the getStringExtra method
String message = intent.getStringExtra(NewActivityName.EXTRA_MESSAGE);

फिर बस AndroidManifest.xml फ़ाइल में निम्न कोड जोड़ें

  android:name="packagename.NameOfTheReceivingActivity"
  android:label="Title of the Activity"
  android:parentActivityName="packagename.NameOfSendingActivity"



5

आप इस कोड को आज़मा सकते हैं:

Intent myIntent = new Intent();
FirstActivity.this.SecondActivity(myIntent);

4

नई गतिविधियों को शुरू करने का तरीका एक इरादे को प्रसारित करना है, और एक विशिष्ट प्रकार का इरादा है जिसका उपयोग आप डेटा को एक गतिविधि से दूसरी गतिविधि में पारित करने के लिए कर सकते हैं। मेरे सिफारिश है कि आप से संबंधित Android डेवलपर डॉक्स की जाँच है उद्देश्य ; यह विषय पर जानकारी का खजाना है, और इसके उदाहरण भी हैं।


4

Kotlin

पहली गतिविधि

startActivity(Intent(this, SecondActivity::class.java)
  .putExtra("key", "value"))

दूसरी गतिविधि

val value = getIntent().getStringExtra("key")

सुझाव

हमेशा अधिक प्रबंधित तरीके से निरंतर फ़ाइल में कुंजियाँ रखें।

companion object {
    val PUT_EXTRA_USER = "user"
}
startActivity(Intent(this, SecondActivity::class.java)
  .putExtra(PUT_EXTRA_USER, "value"))

4

किसी अन्य गतिविधि से गतिविधि शुरू करना Android अनुप्रयोगों के बीच बहुत ही सामान्य परिदृश्य है।
एक गतिविधि शुरू करने के लिए आपको एक आशय वस्तु की आवश्यकता होती है।

इंटेंट ऑब्जेक्ट कैसे बनाएं?

एक आशय वस्तु अपने निर्माता में दो पैरामीटर लेती है

  1. प्रसंग
  2. शुरू की जाने वाली गतिविधि का नाम । (या पूर्ण पैकेज नाम)

उदाहरण:

यहाँ छवि विवरण दर्ज करें

उदाहरण के लिए, यदि आपके पास दो गतिविधियाँ हैं, तो कहना HomeActivityऔरDetailActivity और आप शुरू करना चाहते DetailActivityसे HomeActivity (HomeActivity -> DetailActivity)।

यहां कोड स्निपेट दिया गया है, जिसमें दिखाया गया है कि डिटेलएक्टिविटी कैसे शुरू करें

HomeActivity।

Intent i = new Intent(HomeActivity.this,DetailActivity.class);
startActivity(i);

और आप कर रहे हैं।

वापस बटन पर क्लिक करें भाग पर आ रहा है।

Button button = (Button) findViewById(R.id.someid);

button.setOnClickListener(new View.OnClickListener() {

     @Override
     public void onClick(View view) {
         Intent i = new Intent(HomeActivity.this,DetailActivity.class);
         startActivity(i);  
      }

});

3

इस गतिविधि से एक और गतिविधि शुरू करें और यू बंडल ऑब्जेक्ट के माध्यम से पैरामीटर भी पास कर सकते हैं।

Intent intent = new Intent(getBaseContext(), YourActivity.class);
intent.putExtra("USER_NAME", "xyz@gmail.com");
startActivity(intent);

किसी अन्य गतिविधि (YourActivity) में डेटा पुनर्प्राप्त करें

String s = getIntent().getStringExtra("USER_NAME");

2

View.OnClickListener इंटरफ़ेस को लागू करें और onClick विधि को ओवरराइड करें।

ImageView btnSearch;

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_search1);
        ImageView btnSearch = (ImageView) findViewById(R.id.btnSearch);
        btnSearch.setOnClickListener(this);
    }

@Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.btnSearch: {
                Intent intent = new Intent(Search.this,SearchFeedActivity.class);
                startActivity(intent);
                break;
            }

2

हालाँकि उचित उत्तर पहले ही दिए जा चुके हैं लेकिन मैं यहाँ भाषा कोटलीन में उत्तर की खोज के लिए हूँ। यह प्रश्न भाषा विशेष के बारे में नहीं है इसलिए मैं कोटलिन भाषा में इस कार्य को पूरा करने के लिए कोड जोड़ रहा हूं।

यहाँ है कि आप कैसे कोलिन के लिए यह करते हैं

testActivityBtn1.setOnClickListener{
      val intent = Intent(applicationContext,MainActivity::class.java)
      startActivity(intent)

 }

2

बटन क्लिक पर गतिविधि खोलने का सबसे सरल तरीका है:

  1. Res फ़ोल्डर के अंतर्गत दो गतिविधियाँ बनाएँ, पहली गतिविधि के लिए एक बटन जोड़ें और onclickकार्य करने के लिए एक नाम दें ।
  2. प्रत्येक गतिविधि के लिए दो जावा फाइलें होनी चाहिए।
  3. नीचे कोड है:

MainActivity.java

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import android.content.Intent;
public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void goToAnotherActivity(View view) {
        Intent intent = new Intent(this, SecondActivity.class);
        startActivity(intent);
    }
}

SecondActivity.java

package com.example.myapplication;
import android.app.Activity;
import android.os.Bundle;
public class SecondActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity1);
    }
}

AndroidManifest.xml (मौजूदा में कोड के इस ब्लॉक को जोड़ें)

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

1

पहले xml में बटन लें।

  <Button
        android:id="@+id/pre"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@mipmap/ic_launcher"
        android:text="Your Text"
        />

बटन की सूची बनाओ।

 pre.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(MainActivity.this, SecondActivity.class);
            startActivity(intent);
        }
    });

1

जब बटन क्लिक किया जाता है:

loginBtn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        Intent intent= new Intent(getApplicationContext(), NextActivity.class);
        intent.putExtra("data", value); //pass data
        startActivity(intent);
    }
});

से अतिरिक्त डेटा प्राप्त करने के लिए NextActivity.class:

Bundle extra = getIntent().getExtras();
if (extra != null){
    String str = (String) extra.get("data"); // get a object
}

1

अपनी पहली गतिविधि में कोड लिखें।

button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {


Intent intent = new Intent(MainActivity.this, SecondAcitvity.class);
                       //You can use String ,arraylist ,integer ,float and all data type.
                       intent.putExtra("Key","value");
                       startActivity(intent);
                        finish();
            }
         });

सेकंडअक्टिविटी.क्लास में

String name = getIntent().getStringExtra("Key");

1

नीचे की तरह xml में बटन विजेट रखें

<Button
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Button"
/>

उसके बाद प्रारंभ और नीचे की तरह गतिविधि में क्लिक श्रोता पर हैंडल ।।

गतिविधि में बनाएँ विधि पर:

Button button =(Button) findViewById(R.id.button); 
button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
       Intent intent = new 
            Intent(CurrentActivity.this,DesiredActivity.class);
            startActivity(intent);
    }
});
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.