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]
ऑब्जेक्ट चाहिए।
इरादा ऑब्जेक्ट्स कैसे बनाएं?
एक उद्देश्य वस्तु अपने कन्स्ट्रक्टर में दो पैरामीटर लेती है
- प्रसंग
- शुरू करने के लिए गतिविधि का नाम ।
उदाहरण:
तो उदाहरण के लिए, यदि आपके पास दो गतिविधियां हैं, तो 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);