답변:
쉬운.
Intent myIntent = new Intent(CurrentActivity.this, NextActivity.class);
myIntent.putExtra("key", value); //Optional parameters
CurrentActivity.this.startActivity(myIntent);
추가 정보는 다음을 통해 다른 쪽에서 검색됩니다.
@Override
protected void onCreate(Bundle savedInstanceState) {
Intent intent = getIntent();
String value = intent.getStringExtra("key"); //if it's a string you stored.
}
AndroidManifest.xml에 새로운 활동을 추가하는 것을 잊지 마십시오 :
<activity android:label="@string/app_name" android:name="NextActivity"/>
CurrentActivity.this.startActivity(myIntent)
와 사이에 차이가 startActivity(myIntent)
있습니까?
ViewPerson 활동에 대한 의도를 작성하고 PersonID를 전달하십시오 (예 : 데이터베이스 검색).
Intent i = new Intent(getBaseContext(), ViewPerson.class);
i.putExtra("PersonID", personID);
startActivity(i);
그런 다음 ViewPerson Activity에서 추가 데이터 번들을 가져 와서 null이 아닌지 확인하고 (때로는 데이터를 전달하지 않는 경우) 데이터를 가져옵니다.
Bundle extras = getIntent().getExtras();
if(extras !=null)
{
personID = extras.getString("PersonID");
}
이제 두 활동간에 데이터를 공유해야하는 경우 글로벌 싱글 톤을 가질 수도 있습니다.
public class YourApplication extends Application
{
public SomeDataClass data = new SomeDataClass();
}
그런 다음 다음을 수행하여 활동에서 호출하십시오.
YourApplication appState = ((YourApplication)this.getApplication());
appState.data.CallSomeFunctionHere(); // Do whatever you need to with data here. Could be setter/getter or some other type of logic
현재 답변은 훌륭하지만 초보자에게는보다 포괄적 인 답변이 필요합니다. Android에서 새로운 활동을 시작하는 방법은 3 가지가 있으며 모두 Intent
클래스를 사용합니다 . 의도 | 안드로이드 개발자 .
onClick
버튼 의 속성을 사용합니다 . (초보자)OnClickListener()
익명 클래스를 통해 할당 . (중급)switch
명령문을 사용한 활동 전체 인터페이스 방법 . (찬성)따라하고 싶다면 내 예에 대한 링크 가 있습니다.
onClick
버튼 의 속성 사용 . (초보자)버튼에는 onClick
.xml 파일 내에 있는 속성이 있습니다.
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="goToAnActivity"
android:text="to an activity" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="goToAnotherActivity"
android:text="to another activity" />
자바 클래스에서 :
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
}
public void goToAnActivity(View view) {
Intent intent = new Intent(this, AnActivity.class);
startActivity(intent);
}
public void goToAnotherActivity(View view) {
Intent intent = new Intent(this, AnotherActivity.class);
startActivity(intent);
}
장점 : 쉽고 빠르게 모듈 식으로 만들 수 있으며 여러 onClick
의도를 동일한 의도로 쉽게 설정할 수 있습니다 .
단점 : 검토 할 때 어려운 가독성.
OnClickListener()
익명 클래스를 통해 할당 . (중급)이것은 setOnClickListener()
각각을 개별적 으로 설정하고 button
각각 onClick()
의 의도 로 각각 을 재정의하는 경우 입니다.
자바 클래스에서 :
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
Button button1 = (Button) findViewById(R.id.button1);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(view.getContext(), AnActivity.class);
view.getContext().startActivity(intent);}
});
Button button2 = (Button) findViewById(R.id.button2);
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(view.getContext(), AnotherActivity.class);
view.getContext().startActivity(intent);}
});
장점 : 즉석에서 쉽게 만들 수 있습니다.
단점 : 검토 할 때 가독성을 떨어 뜨리는 익명 클래스가 많이있을 것입니다.
switch
문장을 사용한 활동 전반의 인터페이스 방법 . (찬성)메소드 switch
내에서 단추에 대한 명령문을 사용하여 onClick()
모든 활동 단추를 관리 할 때입니다.
자바 클래스에서 :
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
Button button1 = (Button) findViewById(R.id.button1);
Button button2 = (Button) findViewById(R.id.button2);
button1.setOnClickListener(this);
button2.setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.button1:
Intent intent1 = new Intent(this, AnActivity.class);
startActivity(intent1);
break;
case R.id.button2:
Intent intent2 = new Intent(this, AnotherActivity.class);
startActivity(intent2);
break;
default:
break;
}
장점 : 모든 버튼 의도가 단일 onClick()
방법으로 등록되어있어 간편한 버튼 관리
질문의 두 번째 부분 인 데이터 전달에 대해서는 Android 애플리케이션의 활동간에 데이터를 전달하는 방법을 참조하십시오 .
사용자가 버튼을 클릭하면 XML 내부에서 다음과 같이 직접 수행됩니다.
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextButton"
android:onClick="buttonClickFunction"/>
속성 android:onClick
을 사용하여 부모 활동에 존재해야하는 메소드 이름을 선언합니다. 따라서 다음과 같이 활동 내에서이 메소드를 작성해야합니다.
public void buttonClickFunction(View v)
{
Intent intent = new Intent(getApplicationContext(), Your_Next_Activity.class);
startActivity(intent);
}
Intent iinent= new Intent(Homeactivity.this,secondactivity.class);
startActivity(iinent);
Intent in = new Intent(getApplicationContext(),SecondaryScreen.class);
startActivity(in);
This is an explicit intent to start secondscreen activity.
보내는 활동에서 다음 코드를 시도하십시오.
//EXTRA_MESSAGE is our key and it's value is 'packagename.MESSAGE'
public static final String EXTRA_MESSAGE = "packageName.MESSAGE";
@Override
protected void onCreate(Bundle savedInstanceState) {
....
//Here we declare our send button
Button sendButton = (Button) findViewById(R.id.send_button);
sendButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//declare our intent object which takes two parameters, the context and the new activity name
// the name of the receiving activity is declared in the Intent Constructor
Intent intent = new Intent(getApplicationContext(), NameOfReceivingActivity.class);
String sendMessage = "hello world"
//put the text inside the intent and send it to another Activity
intent.putExtra(EXTRA_MESSAGE, sendMessage);
//start the activity
startActivity(intent);
}
수신 활동에서 다음 코드를 시도하십시오.
protected void onCreate(Bundle savedInstanceState) {
//use the getIntent()method to receive the data from another activity
Intent intent = getIntent();
//extract the string, with the getStringExtra method
String message = intent.getStringExtra(NewActivityName.EXTRA_MESSAGE);
그런 다음 AndroidManifest.xml 파일에 다음 코드를 추가하십시오.
android:name="packagename.NameOfTheReceivingActivity"
android:label="Title of the Activity"
android:parentActivityName="packagename.NameOfSendingActivity"
첫 활동
startActivity(Intent(this, SecondActivity::class.java)
.putExtra("key", "value"))
두 번째 활동
val value = getIntent().getStringExtra("key")
암시
보다 관리 된 방식으로 키를 항상 일정한 파일에 넣으십시오.
companion object {
val PUT_EXTRA_USER = "user"
}
startActivity(Intent(this, SecondActivity::class.java)
.putExtra(PUT_EXTRA_USER, "value"))
다른 활동에서 활동을 시작하는 것은 안드로이드 응용 프로그램에서 매우 일반적인 시나리오입니다.
활동을 시작하려면 인 텐트 오브젝트 가 필요 합니다.
인 텐트 오브젝트는 생성자에서 두 개의 매개 변수를 사용합니다.
예:
예를 들어, 두 가지 활동이 HomeActivity
있고 DetailActivity
및 (HomeActivity-> DetailActivity)DetailActivity
에서 시작하려는 경우 HomeActivity
.
다음은 DetailActivity를 시작하는 방법을 보여주는 코드 스 니펫입니다.
가정 활동.
Intent i = new Intent(HomeActivity.this,DetailActivity.class);
startActivity(i);
그리고 당신은 끝났습니다.
버튼 클릭 부분으로 돌아갑니다.
Button button = (Button) findViewById(R.id.someid);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(HomeActivity.this,DetailActivity.class);
startActivity(i);
}
});
View.OnClickListener 인터페이스를 구현하고 onClick 메소드를 대체하십시오.
ImageView btnSearch;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_search1);
ImageView btnSearch = (ImageView) findViewById(R.id.btnSearch);
btnSearch.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btnSearch: {
Intent intent = new Intent(Search.this,SearchFeedActivity.class);
startActivity(intent);
break;
}
버튼 클릭시 액티비티를 여는 가장 간단한 방법은 다음과 같습니다.
onclick
기능 이름을 지정하십시오 . MainActivity.java
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import android.content.Intent;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void goToAnotherActivity(View view) {
Intent intent = new Intent(this, SecondActivity.class);
startActivity(intent);
}
}
SecondActivity.java
package com.example.myapplication;
import android.app.Activity;
import android.os.Bundle;
public class SecondActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity1);
}
}
AndroidManifest.xml (기존 코드에이 코드 블록을 추가하면 됨)
</activity>
<activity android:name=".SecondActivity">
</activity>
먼저 xml의 버튼을 사용하십시오.
<Button
android:id="@+id/pre"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@mipmap/ic_launcher"
android:text="Your Text"
/>
버튼을 리스터로 만듭니다.
pre.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
startActivity(intent);
}
});
버튼을 클릭하면 :
loginBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent= new Intent(getApplicationContext(), NextActivity.class);
intent.putExtra("data", value); //pass data
startActivity(intent);
}
});
추가 데이터를 수신하려면 NextActivity.class
:
Bundle extra = getIntent().getExtras();
if (extra != null){
String str = (String) extra.get("data"); // get a object
}
첫 번째 활동에서 코드를 작성하십시오.
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this, SecondAcitvity.class);
//You can use String ,arraylist ,integer ,float and all data type.
intent.putExtra("Key","value");
startActivity(intent);
finish();
}
});
secondActivity.class에서
String name = getIntent().getStringExtra("Key");
아래와 같이 XML에 버튼 위젯 배치
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button"
/>
그 후 아래와 같이 Activity에서 클릭 리스너를 초기화하고 처리하십시오.
Activity On Create 메소드에서 :
Button button =(Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new
Intent(CurrentActivity.this,DesiredActivity.class);
startActivity(intent);
}
});