एंड्रॉइड ऐप में बटन पर क्लिक करने पर दूसरी गतिविधि कैसे खोलें


96

मैं Android एप्लिकेशन बनाना सीख रहा हूं और मुझे कुछ विशिष्ट सहायता की आवश्यकता है। मैं अपना सिर प्राप्त करने के लिए प्रतीत नहीं कर सकता हूं कि मुझे कौन से बिट कोड को बदलने की आवश्यकता है, और कौन से बिट्स स्थिर हैं।

में लेआउट फ़ोल्डर मैं अपने राशि ACTIVITY_MAIN.XML जो पढ़ता

 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="horizontal">

 <Button
    android:id="@+id/button1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="@string/main_buttons_photos" />

 </LinearLayout>

इसके बाद, मेरी दूसरी गतिविधि ACTIVITY_SEND_PHOTOS.XML है जो है

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent" >

 <TextView
    android:id="@+id/textView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:text="@string/hello_world"
    tools:context=".SendPhotos" />

 <TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:text="@string/title_activity_send_photos"
    android:textAppearance="?android:attr/textAppearanceLarge" />

 </RelativeLayout>

मैं तो अपने MainActivity.java (क्या यह .class है?) यह पैकेज com.example.assent.bc पढ़ता है;

 import android.os.Bundle;
 import android.app.Activity;
 import android.view.Menu;
 import android.view.View;

 public class MainActivity extends Activity {

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

 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
     getMenuInflater().inflate(R.menu.activity_main, menu);
     return true;
 }
 /** Called when the user clicks the Send button */
 public void sendMessage(View view) {
     // Do something in response to button
 }
 }

और फिर मेरी SendPhotos.java फ़ाइल जो है;

 package com.example.assent.bc;

 import android.os.Bundle;
 import android.app.Activity;
 import android.view.Menu;
 import android.view.MenuItem;
 import android.support.v4.app.NavUtils;

 public class SendPhotos extends Activity {

 @Override
 public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_send_photos);
    getActionBar().setDisplayHomeAsUpEnabled(true);
 }

 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_send_photos, menu);
    return true;
 }


 @Override
 public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case android.R.id.home:
            NavUtils.navigateUpFromSameTask(this);
            return true;
    }
    return super.onOptionsItemSelected(item);
 }

 }

मैं अपनी मुख्य गतिविधि में बटन को अपने सेंडफोटो गतिविधि के माध्यम से लिंक करना चाहूंगा, बस उस गतिविधि को खोलना, फैंसी कुछ भी नहीं, कोई डेटा या कुछ भी नहीं भेजना।

मुझे पता है कि कहीं न कहीं मुझे मेरी जरूरत है

 Intent i = new Intent(FromActivity.this, ToActivity.class);
 startActivity(i);

लेकिन मुझे पता नहीं है कि क्या ToActivity.class को बदलना है या मुझे और कहाँ चाहिए।



1
ToActivity.class आपका दूसरा नाम है
निरंजन पटेल

यह आपके लिए सबसे अच्छा स्रोत हो सकता है
उस्मा सादिक

इरादे वर्ग के पास कोई भी निर्माणकर्ता नहीं है जो दो वर्ग को एक रूप में स्वीकार करता है! मुझे क्या करना चाहिए?
इमाद अगाही

जवाबों:


155

आप बटन क्लिक पर वांछित गतिविधि पर जा सकते हैं। बस इस लाइन को जोड़ें।

android:onClick="sendMessage"

xml:

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

अपनी मुख्य गतिविधि में बस इस विधि को जोड़ें:

public void sendMessage(View view) {
    Intent intent = new Intent(FromActivity.this, ToActivity.class);
    startActivity(intent);
}

और सबसे महत्वपूर्ण बात: अपनी गतिविधि को परिभाषित करना न भूलें manifest.xml

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

3
आपको >गतिविधि टैग में जोड़ना होगा
Mageek

2
यह मेरे लिए काम नहीं कर रहा है। View, Intentऔर गतिविधि नाम लाल रंग में हैं। क्या मुझे दृश्य के लिए कुछ भी आयात करने की आवश्यकता है?
सर्जन बरई

1
@SrujanBarai हाँ, दोनों android.view.View आयात करते हैं; और android.content.Intent आयात करें; आयात किया जाना चाहिए
विलियम रीड

इसने मेरे लिए अच्छा काम किया। हालाँकि उसे अपने बटन पर setOnClickListener () की आवश्यकता नहीं है?
एवागेलोस मंसोकिस

1
@VaggelisManousakis नहीं इसकी आवश्यकता नहीं है क्योंकि यह पहले से ही xml में हैandroid:onClick="sendMessage"
Juned

30

इसे इस्तेमाल करे

  Button button;

public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_main);

button=(Button)findViewById(R.id.button1);
        button.setOnClickListener(new View.OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        // TODO Auto-generated method stub
                        Intent i = new Intent(getApplicationContext(),SendPhotos.class);
                        startActivity(i);
                    }
                });

 }

पर कहा? मैं हर जगह त्रुटियों मिलता है मैं ग्रहण में इस के भीतर जावा जगह की कोशिश
हेनरी Aspden

@HenryAspden आयात onclocklistener और बटन।
जद

@HenryAspden ने यह कोड onCreate के बाद और अपनी आईडी खोजने के बाद रखा।
जेडी

@HenryAspden मैंने अपना कोड संपादित किया है अब यह कोशिश करें। मैंने इस कोड को onCreate में इस तरह आज़माया है।
JD

11

गतिविधि से: आप वर्तमान में कहां हैं?

गतिविधि के लिए: आप कहाँ जाना चाहते हैं?

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

दोनों गतिविधि को मैनिफ़ेस्ट फ़ाइल में शामिल किया जाना चाहिए अन्यथा यह क्लास फ़ाइल और थ्रो फ़ोर्स को बंद नहीं करेगा।

अपनी Mainactivity.java संपादित करें

crate button's object;

अब क्लिक इवेंट के लिए कोड लिखें।

        Button btn = (button)findViewById(R.id.button1);
         btn.LoginButton.setOnClickListener(new View.OnClickListener() 
       {

                @Override
                public void onClick(View v) 
                {
                 //put your intent code here
                }
   });

आशा है कि यह आपके लिए काम करेगा।


क्या यह लेआउट या जावा के भीतर जाता है?
हेनरी एस्पेन 12

ठीक है आप इस कोड को मुख्य गतिविधि में बटन क्लिक की घटना में डाल सकते हैं।
जावा

11
Button btn = (Button) findViewById(R.id.button1);

btn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent myIntent = new Intent(MainActivity.this, MainActivity2.class);
        MainActivity.this.startActivity(myIntent);       
    }  
});

एक पूर्ण noob से पूर्ण noob के लिए जवाब: MainActivityपहली गतिविधि का नाम है। MainActivity2दूसरी गतिविधि का नाम है। गतिविधि के button1लिए xml में बटन की आईडी है MainActivity


1
सिर्फ दूसरों की मदद करने के लिए ... "बटन का नाम" से आप आईडी का उल्लेख कर रहे हैं?
हेनरी एस्पेन

वास्तव में । अपने reccomendation प्रतिबिंबित करने के लिए सही किया
iAmNotVeryGoodAtThis

5

बस इस चरण का पालन करें (मैं कोड नहीं लिख रहा हूँ सिर्फ Bcoz आप कॉपी और पेस्ट कर सकते हैं और सीख सकते हैं) ।।

  1. सबसे पहले आपको एक बटन घोषित करने की आवश्यकता है जो आपके पास लेआउट में है

  2. Oncreate में उसकी आईडी (findviewById का उपयोग करके) उस बटन का संदर्भ दें

  3. बटन के लिए सेटलिस्टनर (सेटऑनक्लिक श्रोता की तरह)

  4. अंतिम घटना पर क्लिक करें (जैसे कि आप पहले से ही जानते हैं इरादे का उपयोग करके नई गतिविधि शुरू करें)

  5. प्रकट फ़ाइल में गतिविधि जोड़ना न भूलें

BTW यह सिर्फ आसान है मैं आपको सुझाव देना चाहता हूं कि बस नेट पर उपलब्ध सरल ट्यूटोरियल से शुरू करें आपके लिए बेहतर होगा ..

Android के लिए शुभकामनाएँ


3

नीचे दिए गए लाइन कोड को बदलें:

import android.view.View.OnClickListener;
public class MainActivity extends Activity implements OnClickListener{
   Button button;
    @Override
     public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button=(Button)findViewById(R.id.button1);
        button.setOnClickListener(this);
      }
       public void onClick(View v) {
        if(v.getId==R.id.button1){
      Intent i = new Intent(FromActivity.this, ToActivity.class);
               startActivity(i);
            }
        }
     }

अपनी प्रकट फ़ाइल में नीचे की पंक्तियाँ जोड़ें:

   <activity android:name="com.packagename.FromActivity"></activity>
   <activity android:name="com.packagename.ToActivity"></activity>

3

इन कोड के साथ अपने MainActivity.class को बदलें

public class MainActivity extends Activity {

Button b1;
@Override
public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 b1=(Button)findViewById(R.id.button1);
 b1.setOnClickListener(new View.onClickListener()
 {
  public void onClick(View v)
   {
       Intent i=new Intent(getApplicationContext(),SendPhotos.class);
       startActivity(i);
    }
 }
 )
}

पहले और AndroidManifest.xmlबाद में इन कोड को अपने में जोड़ें</activity></application>

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

2

यह हमेशा काम करता है, या तो एक ठीक होना चाहिए:

@Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    Button btn = (Button) findViewById(R.id.button1);
    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick (View v) {
            startActivity(new Intent("com.tobidae.Activity1"));
        }
        //** OR you can just use the one down here instead, both work either way
        @Override
        public void onClick (View v){
            Intent i = new Intent(getApplicationContext(), ChemistryActivity.class);
            startActivity(i);
        }
    }
}

2

नीचे कोड को activity_main.xml फ़ाइल में जोड़ें:

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

और नीचे दी गई विधि को MainActivity.java फ़ाइल में जोड़ें:

public void buttonClick(View view){
  Intent i = new Intent(getApplicationContext()SendPhotos.class);
  startActivity(i);
}

आपके पास टाइपो इन, फ़ाइल के नाम से पहले एक प्रश्न चिह्न है
मैथ्यू VIALES

गलती के लिए क्षमा करें
Md नकीबुल हसन

1

यदि आपके पास दो बटन हैं और आपके बटन पर समान आईडी कॉल है, तो इस तरह की घटनाओं पर क्लिक करें:

Button btn1;
Button btn2;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    btn1= (Button)findViewById(R.id.button1);

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

    btn2=(Button) findViewById(R.id.button1);//Have same id call previous button---> button1

    btn2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

        }
    });

जब आप क्लिक करेंगे button1, button2काम करेंगे और आप अपनी दूसरी गतिविधि नहीं खोल सकते।


1
 <Button
            android:id="@+id/btnSignIn"
            android:layout_width="250dp"
            android:layout_height="40dp"
            android:layout_marginEnd="8dp"
            android:layout_marginLeft="8dp"
            android:layout_marginRight="8dp"
            android:layout_marginStart="8dp"
            android:layout_marginTop="16dp"
            android:background="@drawable/circal"
            android:text="Sign in"
            android:textColor="@color/white"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/etPasswordLogin" />

जावा CODE में

Button signIn= (Button) findViewById(R.id.btnSignIn);

signIn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(SignInPage.this,MainActivity.class));
            }
        });

}


1

आप बटन क्लिक पर वांछित गतिविधि पर जा सकते हैं। बस
Android जोड़ें : onClick = "टाइमरऐप" इस लाइन को।

xml:

 <Button
        android:id="@+id/timer_app"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="timerApp"
        android:text="Click To run Timer Activity" />

अपनी मुख्य गतिविधि में बस इस विधि को जोड़ें:

 public void timerApp(View view){
        Intent intent= new Intent(MainActivity.this,TimerActivity.class);
        startActivity(intent);
    }

या onCreate () मेथड कोड के नीचे जोड़ें

Button btn =findViewById(R.id.timer_app);//Don't need to type casting in android studio 3

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