android - सवर - सहायतानिजतानियम




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

View.OnClickListener इंटरफ़ेस को कार्यान्वित करें और ऑनक्लिक विधि को ओवरराइड करें।

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

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


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

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

इम्मानुएल,

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

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

myIntent.putExtra("key", value);

CurrentActivity.this.startActivity(myIntent);

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

Intent intent = new Intent(getBaseContext(), YourActivity.class);
intent.putExtra("USER_NAME", "[email protected]");
startActivity(intent);

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

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

एंड्रॉइड अनुप्रयोगों के बीच एक और गतिविधि से एक गतिविधि शुरू करना बहुत आम परिदृश्य है।
एक गतिविधि शुरू करने के लिए आपको एक [Intent][1] ऑब्जेक्ट चाहिए।

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

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

  1. प्रसंग
  2. शुरू करने के लिए गतिविधि का नाम

उदाहरण:

तो उदाहरण के लिए, यदि आपके पास दो गतिविधियां हैं, तो HomeActivity और 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);  
      }

});

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

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

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

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

पहले एक्सएमएल में बटन ले लो।

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

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

   //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);

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

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

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

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

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

एंड्रॉइड के लिए कोटलिन में आप यह कैसे करते हैं

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

 }

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

    This is an explicit intent to start secondscreen activity.

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




android-lifecycle