Как открыть второе действие по нажатию кнопки в android-приложении
Я учусь создавать приложения для 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 (это то .класс?) это читает
пакет com.образец.одобрение.до н. э.;
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);
}
}
Я хотел бы, чтобы кнопка в моей основной деятельности связывалась с моей деятельностью sendphotos, просто открывая эту деятельность, ничего необычного, не отправляя никаких данных или чего-либо еще.
Я знаю, что где-то мне нужно
Intent i = new Intent(FromActivity.this, ToActivity.class);
startActivity(i);
но я понятия не имею, чем заменить ToActivity.класс или что еще мне нужно где.
12 ответов:
вы можете перейти к нужной деятельности по нажатию кнопки. просто добавьте
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);оба действия должны быть включены в файл манифеста в противном случае он не будет найден файл класса и бросить силу закрыть.
измените свою основную активность.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 } });надеюсь, что это будет работать для вас.
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это идентификатор кнопки в xml дляMainActivityактивности.
просто выполните этот шаг (я не пишу код просто Bcoz вы можете сделать копирование и вставку и не могу узнать)..
сначала нужно объявить кнопку, которая у вас есть в макете
дайте ссылку на эту кнопку, найдя ее идентификатор (с помощью findviewById) в oncreate
setlistener для кнопки (например, setonclick listener)
последний дескриптор события click (означает начать новую деятельность с помощью используя намерение, как вы уже знаете)
Не забудьте добавить активность в файл манифеста
кстати, это просто я хотел бы предложить, что вы просто начните с простых учебников в сети будет лучше для вас..
удачи для Android
заменить ниже код строки:
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>
замените свою основную активность.класс с этим кодом
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>
это всегда работает, либо один должен быть просто отлично:
@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 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)); } });}
вы можете перейти к нужной деятельности по нажатию кнопки. просто добавьте
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" /> In your main activity just add this method: 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); } });
Comments