অ্যান্ড্রয়েড অ্যাপ্লিকেশনটিতে ক্লিকের বোতামে দ্বিতীয় ক্রিয়াকলাপ কীভাবে খুলবেন


96

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

ইন বিন্যাস ফোল্ডারের আমি আমার আছে 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>

আমি তখন আমার মেইনএ্যাকটিভিটি.জভা (এটি কি .ক্লাস?) এই প্যাকেজটি 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
 }
 }

এবং তারপরে আমার সেন্ডফোটস.জভা ফাইলটি যা;

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

 }

আমি আমার মূল ক্রিয়াকলাপের বোতামটি আমার সেন্ডফোটস ক্রিয়াকলাপের সাথে লিঙ্ক করা, কেবল সেই ক্রিয়াকলাপটি খোলার, অভিনব কোনও কিছুই না, কোনও ডেটা বা কিছু না পাঠানো চাই not

আমি জানি যে কোথাও আমার প্রয়োজন

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

তবে ToActivity.class কে কী সাথে প্রতিস্থাপন করা উচিত বা আমার অন্য কোথায় কী দরকার তা আমার কোনও ধারণা নেই ।



4
টোঅ্যাক্টিভিটি.ক্লাস আপনার দ্বিতীয় কার্যকারিতা নাম
নিরঞ্জ প্যাটেল

এটি আপনার পক্ষে সেরা উত্স হতে পারে
উসামা সাদিক

ইন্টেন্ট ক্লাসে এমন কোন কনস্ট্রাক্টর নেই যা দুটি ক্লাসকে অরগমেন্ট হিসাবে স্বীকৃতি দেয়! আমার কি করা উচিৎ?
এমাদ অগহে

উত্তর:


156

আপনি বাটন ক্লিকে পছন্দসই ক্রিয়াকলাপে যেতে পারেন move শুধু এই লাইন যুক্ত করুন।

android:onClick="sendMessage"

এক্সএমএল:

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

4
আপনাকে অবশ্যই >কার্যকলাপের ট্যাগে যুক্ত করতে হবে
ম্যাজেক

4
এটি আমার জন্য কাজ করছে না। View, Intentএবং কার্যকলাপ নাম লাল হয়। ভিউয়ের জন্য আমার কি কিছু আমদানি করা দরকার?
শ্রুজান বড়াই

4
@ শ্রুজানবাড়াই হ্যাঁ, উভয়ই এন্ড্রয়েড.ভিউ আমদানি করুন; দেখুন; এবং আমদানি করুন android.content.Inttent; অবশ্যই আমদানি করতে হবে
উইলিয়াম রিড

এটা আমার জন্য ভাল কাজ করেছিল. তবে তার কি তার বাটনে একটি সেটঅনলিকলাইজনার () দরকার নেই?
ইভাগ্লোলোস মানুসাকিস

4
কোন তার প্রয়োজন হয় না @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);
                    }
                });

 }

কিন্তু যেখানে? আমি পুরো জায়গাতেই ত্রুটি পেয়েছি যদি আমি এইটিকে গ্রহের মধ্যে। জাভা দিয়ে রাখার চেষ্টা করি
হেনরি অ্যাসপডেন

@ হেনরিএস্পডেন অন্লোক্ল্যাজেস্টনার এবং বোতামটি আমদানি করুন।
জেডি

@ হেনরিএস্পডন এই কোডটি অনক্রিটের পরে এবং আপনার আইডি সন্ধান করার পরে রেখেছিল।
জেডি

@ হেনরিএস্পডেন আমি আমার কোড সম্পাদনা করেছি এখন এটি ব্যবহার করে দেখুন। আমি এই কোডটি এইভাবে অনক্রিটেতে রেখেছি।
জেডি

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

আশা করি এটি আপনার পক্ষে কাজ করবে।


এই লেআউট বা জাভা মধ্যে যেতে না?
হেনরি অ্যাসপডেন

ঠিক আছে আপনি এই কোডটি বোতামের ক্লিক ইভেন্টে মূল ক্রিয়াকলাপে
রাখতে পারেন ava জাভা

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

সম্পূর্ণ নুব থেকে সম্পূর্ণ নুবের উত্তর: MainActivityপ্রথম ক্রিয়াকলাপের নাম। MainActivity2দ্বিতীয় ক্রিয়াকলাপের নাম। ক্রিয়াকলাপের button1জন্য এক্সএমএলে থাকা বোতামটির আইডি MainActivity


4
অন্যকে সাহায্য করার জন্য ... "বোতামের নাম" দিয়ে আপনি কী আইডিটি উল্লেখ করছেন?
হেনরি এস্পডেন

প্রকৃতপক্ষে . আপনার
পুনরুদ্ধার

5

কেবল এই পদক্ষেপটি অনুসরণ করুন (আমি কোডটি লিখছি না কেবল Bcoz আপনি কপি এবং পেস্ট করতে পারেন এবং শিখতে পারবেন না) ..

  1. প্রথমে আপনাকে বিন্যাসে থাকা একটি বোতামটি ঘোষণা করতে হবে

  2. এই বোতামটির আইডি (ফাইন্ডভিউবিআইআইডি ব্যবহার করে) ক্রিয়াকলাপে রেফারেন্স দিন

  3. বোতামের জন্য সেটলিস্টার (সেটনক্লিক শ্রোতার মতো)

  4. সর্বশেষ ক্লিক ইভেন্টটি হ্যান্ডেল করুন (এর মানে আপনি ইতিমধ্যে জানেন তেমন উদ্দেশ্য ব্যবহার করে নতুন ক্রিয়াকলাপ শুরু করুন)

  5. ম্যানিফেস্ট ফাইলে ক্রিয়াকলাপ যুক্ত করতে ভুলবেন না

বিটিডাব্লু এটি কেবল সহজ আমি আপনাকে পরামর্শ দিতে চাই যে নেট এ উপলব্ধ সহজ টিউটোরিয়ালগুলি থেকে শুরু করা আপনার পক্ষে ভাল be

অ্যান্ড্রয়েডের জন্য শুভকামনা


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

এই কোডের সাহায্যে আপনার মেইনএ্যাকটিভিটি.ক্লাস প্রতিস্থাপন করুন

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

ক্রিয়াকলাপ_মাইন.এক্সএমএল ফাইলের নীচে কোড যুক্ত করুন:

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

এবং কেবল মেইনএকটিভিটি.জভা ফাইলটিতে নীচের পদ্ধতিটি যুক্ত করুন:

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

আপনার টাইপ টাইপ করা আছে, ফাইলটির নামের আগে একটি প্রশ্ন চিহ্ন
ম্যাথিউ ভিআইএলএস

ভুলের জন্য দুঃখিত
মোঃ নাকিবুল হাসান

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" />

জাভা কোডে

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

আপনি বাটন ক্লিকে পছন্দসই ক্রিয়াকলাপে যেতে পারেন। কেবল
অ্যান্ড্রয়েড যুক্ত করুন: অন্লিক ক্লিক করুন "টাইমার অ্যাপ" এই লাইন।

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

অথবা অনক্রিয়েট () পদ্ধতিতে কোডের নীচে যুক্ত করুন

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