如何在Android应用程序中点击button打开第二个活动
我正在学习构buildAndroid应用程序,我需要一些特定的帮助。 我似乎无法摆脱我需要改变哪些模板代码位,哪些位是静态的。
在LAYOUT文件夹中,我有我的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); } }
我希望我的主要活动中的button链接到我的sendphotos活动,只需打开该活动,没有任何幻想,不发送任何数据或任何东西。
我知道我需要我的地方
Intent i = new Intent(FromActivity.this, ToActivity.class); startActivity(i);
但我不知道如何replaceToActivity.class或者我需要什么地方。
您可以移动到button单击所需的活动。 只需添加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>
尝试这个
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); } }); }
从活动:你在哪里?
活动:你想去哪里?
Intent i = new Intent( MainActivity.this, SendPhotos.class); startActivity(i);
这两个活动必须包含在清单文件中,否则将不会find类文件并抛出强制closures。
编辑你的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 } });
希望它能为你工作。
Button btn = (Button) findViewById(R.id.button1); btn.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { Intent myIntent = new Intent(MainActivity.this, MainActivity2.class); MainActivity.this.startActivity(myIntent); } });
完整noob的完整noob的答案: MainActivity
是第一个活动的名称。 MainActivity2
是第二个活动的名称。 button1
是MainActivity
Activity的xmlbutton的ID。
只要按照这一步(我不写代码只是Bcoz你可以做复制和粘贴,不能学习)..
-
首先你需要声明一个你在布局中使用的button
-
通过在oncreate中find它的id(使用findviewById)来引用该button
-
setlistener的button(如setonclick监听器)
-
最后处理点击事件(意味着已经使用意图开始新的活动)
-
不要忘记在清单文件中添加活动
顺便说一句,这只是简单的,我想build议你,从网上提供的简单教程开始将是更好的..
Android的最佳运气
replace下面的行代码:
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>
用这些代码replace你的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); } } ) }
在</activity>
和之前</application>
之后, 将这些代码添加到 AndroidManifest.xml
<activity android:name=".SendPhotos"></activity>
这总是有效的,要么一个应该就好了:
@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); } } }
将下面的代码添加到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); }
如果你有两个button,并有相同的ID调用你的button点击这样的事件:
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
将起作用,你不能打开你的第二个活动。
<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" />
在JAVA代码
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)); } });
}