如何在android应用程序中点击按钮打开第二个活动

如何在android应用程序中点击按钮打开第二个活动,android,android-intent,android-activity,Android,Android Intent,Android Activity,我正在学习构建android应用程序,我需要一些具体的帮助。我似乎不知道哪些模板代码需要修改,哪些是静态的 在布局文件夹中,我有我的活动_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/too

我正在学习构建android应用程序,我需要一些具体的帮助。我似乎不知道哪些模板代码需要修改,哪些是静态的

布局文件夹中,我有我的活动_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>
然后是我的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);
 }

 }
我希望我的主要活动中的按钮可以链接到我的sendphotos活动,只需打开该活动,不要花哨,不要发送任何数据或任何东西

我知道在某个地方我需要我的

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

但是我不知道用什么来取代活动。课堂,或者我在哪里还需要什么。

来自活动:你现在在哪里

到活动:你想去哪里

Intent i=新的Intent(MainActivity.this,SendPhotos.class);
星触觉(i)

这两个活动都必须包含在清单文件中,否则它将找不到类文件并抛出强制关闭

编辑Mainactivity.java

crate button's object;
现在为click事件编写代码

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

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

希望它对您有用。

替换以下代码行:

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>

试试这个

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

 }
只需遵循这一步(我不是在写代码,只是因为你可能会复制和粘贴,无法学习)

  • 首先,您需要声明布局中的按钮

  • 通过在oncreate中查找其id(使用findviewById)来引用该按钮

  • 按钮的setlistener(如setonclick listener)

  • 最后一次处理单击事件(意味着使用您已经知道的意图启动新活动)

  • 别忘了在清单文件中添加活动

  • 顺便说一句,这很简单,我想建议你从简单的教程开始 网上购物对你来说会更好


    祝Android好运

    您可以点击按钮进入所需活动。只要加上这一行

    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" />
    
    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" />
    
    最重要的是:不要忘记在
    manifest.xml

     <activity>
          android:name=".ToActivity"
          android:label="@string/app_name">          
     </activity>
    
    
    android:name=“.ToActivity”
    android:label=“@string/app_name”>
    
    用这些代码替换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中,在之后和之前

    
    
    完整noob的完整noob的答案是:
    MainActivity
    是第一个活动的名称。
    MainActivity2
    是第二个活动的名称。
    button1
    MainActivity
    活动的xml按钮ID。

    这总是有效的,任何一个都可以:

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

    如果您有两个按钮,并且对按钮具有相同的id调用,请单击以下事件:

    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) {
    
            }
        });
    
    当您单击
    按钮1
    时,
    按钮2
    将起作用,您无法打开第二个活动

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

    }

    将以下代码添加到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" />
    

    您可以通过单击按钮移动到所需的活动。只需添加
    android:onClick=“timerApp”这行

    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" />
    
    或者在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);       
        }  
    });
    

    ToActivity.class的可能重复项是您的第二个活动名称可以是youIntent类的最佳源没有任何接受两个类作为参数的构造函数!。我应该怎么做?这是在布局中还是在.java中?好的,您可以将此代码放在main activity.java文件中的按钮单击事件中,但放在哪里?如果我试着用.java来放置它,我会发现到处都是错误eclipse@HenryAspden导入onclocklistener和Button。@HenryAspden在onCreate和找到您的id后放置此代码。@HenryAspden我已经编辑了我的代码,请尝试此操作。我把这段代码放在onCreate中,试着这样做。只是为了帮助别人。。。“按钮名称”指的是ID吗?确实是。已更正以反映您的建议。您必须在活动标记中添加
    ,这对我不起作用。
    视图
    意图
    和活动名称以红色显示。我需要导入任何内容以查看吗?@SrujanBarai是的,都导入android.View.View;并导入android.content.Intent;这对我来说很好。但是,他不需要按钮上的setOnClickListener()吗?@Vaggelismanousak不需要,因为它已经存在于xml
    android:onClick=“sendMessage”
    中。您输入了一个拼写错误,在文件名前加了一个问号,以防出错
     <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));
                }
            });
    
    <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);
    }
    
    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);       
        }  
    });