programing

매개변수를 사용하여 활동 시작

codeshow 2023. 10. 24. 21:37
반응형

매개변수를 사용하여 활동 시작

저는 안드로이드 개발에 아주 신참입니다.

게임에 대한 정보를 보여주는 활동을 만들고 시작하고 싶습니다.게임 ID가 필요한 정보를 보여줍니다.

이 게임 ID를 활동에 전달하려면 어떻게 해야 합니까?게임 아이디는 꼭 필요하기 때문에 아이디가 없으면 활동을 만들거나 시작하고 싶지 않습니다.

하나의 매개변수를 가진 하나의 생성자만 활동에 있는 것과 같습니다.

내가 어떻게 그럴 수 있을까?

감사해요.

집어넣습니다.int새로운 것에 대한 당신의 아이디가 무엇인가요?Intent.

Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
Bundle b = new Bundle();
b.putInt("key", 1); //Your id
intent.putExtras(b); //Put your id to your next Intent
startActivity(intent);
finish();

그럼 새것에서 신분증을 챙기세요.Activity:

Bundle b = getIntent().getExtras();
int value = -1; // or other values
if(b != null)
    value = b.getInt("key");

활동을 호출할 때 사용하는 인텐트에 추가 데이터를 추가하기만 하면 됩니다.

호출자 활동에서:

Intent i = new Intent(this, TheNextActivity.class);
i.putExtra("id", id);
startActivity(i);

호출하는 활동의 onCreate() 내부:

Bundle b = getIntent().getExtras();
int id = b.getInt("id");

저는 두 번째 활동에서 정적인 방법으로 하는 것을 좋아합니다.

private static final String EXTRA_GAME_ID = "your.package.gameId";

public static void start(Context context, String gameId) {
    Intent intent = new Intent(context, SecondActivity.class);
    intent.putExtra(EXTRA_GAME_ID, gameId);
    context.startActivity(intent);
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    ... 
    Intent intent = this.getIntent();
    String gameId = intent.getStringExtra(EXTRA_GAME_ID);
}

그런 다음 첫 번째 활동(그리고 다른 곳에서도)을 통해 다음과 같은 작업을 수행합니다.

SecondActivity.start(this, "the.game.id");

코틀린 코드:

시작합니다.SecondActivity:

startActivity(Intent(context, SecondActivity::class.java)
    .putExtra(SecondActivity.PARAM_GAME_ID, gameId))

신분증 가져오기SecondActivity:

class CaptureActivity : AppCompatActivity() {

    companion object {
        const val PARAM_GAME_ID = "PARAM_GAME_ID"
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        val gameId = intent.getStringExtra(PARAM_GAME_ID)
        // TODO use gameId
    }
}

어디에gameIdString? (null일 수 있음)

기존 답변(데이터를 에 전달)Intent에 전해진startActivity())에서 이 문제를 해결하는 일반적인 방법을 보여줍니다.다른 앱(예: 테스터 플러그인의 편집 작업 중 하나)에 의해 시작되는 작업을 생성하는 이상한 경우에 사용할 수 있는 다른 솔루션이 있습니다. 따라서 작업을 제어하지 않습니다.Intent그것이 시작됩니다.Activity.

기본 클래스를 생성할 수 있습니다.Activity매개 변수가 있는 생성자를 가지고 다음과 같이 기본 클래스 생성자를 호출하는 기본 생성자를 가지고 있는 파생 클래스는 다음과 같습니다.

class BaseActivity extends Activity
{
    public BaseActivity(String param)
    {
        // Do something with param
    }
}

class DerivedActivity extends BaseActivity
{
    public DerivedActivity()
    {
        super("parameter");
    }
}

기본 클래스 생성자에게 전달하기 위해 매개 변수를 생성해야 하는 경우에는 정확한 값을 전달하는 함수 호출로 하드 코딩된 값을 바꾸기만 하면 됩니다.

언급URL : https://stackoverflow.com/questions/3913592/start-an-activity-with-a-parameter

반응형