簡體   English   中英

從 MainActivity 開始不同的活動

[英]Starting different activities from MainActivity

我是新來的,我想我在 Java 中犯了一個錯誤,但我不知道如何糾正它。 大多數有類似問題的人都有更復雜的項目,我無法通過查看他們的代碼來解決我的問題。

我想使用不同的按鈕(其中 9 個)來啟動不同的活動,但是當我開始添加第二個時,只有活動 1 (LeftArmActivity) 彈出。 無論我在 XML 中更改什么以調用 HeadActivity 啟動的正確方法,都只會啟動 LeftActivity。 我從其他主題中得到了一個提示,它可能是由覆蓋意圖引起的,但我不知道如何解決這個問題。 我嘗試使用 getActivity() 但它只是崩潰了。 你能幫我解決這個問題嗎?

@更新

好的,我使用了下面推薦的開關,但現在應用程序根本無法啟動:/

 public class MainActivity extends AppCompatActivity {

Context context = this;
Button LeftArmOpener = (Button) findViewById(R.id.LeftArmOpener);
Button HeadOpener = (Button) findViewById(R.id.HeadOpener);
Button RightArmOpener = (Button) findViewById(R.id.RightArmOpener);
Button CreditsOpener = (Button) findViewById(R.id.CreditsOpener);
Button TrunkOpener = (Button) findViewById(R.id.TrunkOpener);
Button NextOpener = (Button) findViewById(R.id.NextOpener);
Button RightLegOpener = (Button) findViewById(R.id.RightLegOpener);
Button ExitOpener = (Button) findViewById(R.id.ExitOpener);
Button LeftLegOpener = (Button) findViewById(R.id.LeftLegOpener);

protected View.OnClickListener mClick;


protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    mClick = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            switch (v.getId()) {
                case R.id.RightArmOpener: {
                    Intent i1 = new Intent(context, LeftArmActivity.class);
                    startActivity(i1);
                    break;
                }
                case R.id.HeadOpener: {
                    Intent i2 = new Intent(context, HeadActivity.class);
                    startActivity(i2);
                    break;
                }
                case R.id.LeftArmOpener: {
                    Intent i3 = new Intent(context, LeftArmActivity.class);
                    startActivity(i3);
                    break;
                }
                case R.id.CreditsOpener: {
                    Intent i4 = new Intent(context, CreditsActivity.class);
                    startActivity(i4);
                    break;
                }
                case R.id.TrunkOpener: {
                    Intent i5 = new Intent(context, TrunkActivity.class);
                    startActivity(i5);
                    break;
                }
                case R.id.NextOpener: {
                    Intent i6 = new Intent(context, NextActivity.class);
                    startActivity(i6);
                    break;
                }
                case R.id.RightLegOpener: {
                    Intent i7 = new Intent(context, RightLegActivity.class);
                    startActivity(i7);
                    break;
                }
                case R.id.ExitOpener: {
                    Intent i8 = new Intent(context, ExitActivity.class);
                    startActivity(i8);
                    break;
                }
                case R.id.LeftLegOpener: {
                    Intent i9 = new Intent(context, LeftLegActivity.class);
                    startActivity(i9);
                    break;
                }
                //create this for all 9 buttons
            }

        }

    };

    LeftArmOpener.setOnClickListener(mClick);
    HeadOpener.setOnClickListener(mClick);
    RightArmOpener.setOnClickListener(mClick);
    CreditsOpener.setOnClickListener(mClick);
    TrunkOpener.setOnClickListener(mClick);
    NextOpener.setOnClickListener(mClick);
    RightLegOpener.setOnClickListener(mClick);
    ExitOpener.setOnClickListener(mClick);
    LeftLegOpener.setOnClickListener(mClick);


}

}

用這個更新你的代碼

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate (Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

}

public void openHead(View view){
    startActivity(new Intent(MainActivity.this, LessonOne.class));
    //startActivity(t);
}


public void openLeftArm(View view){
    Intent i = new Intent(MainActivity.this, LeftArmActivity.class);
    startActivity(i);
}
}

//問題是您兩次調用 startActivity() 並從 Activity 傳遞 getActivity()。

你說你有 9 個按鈕,所以我認為你應該在這種情況下使用switch case ,請參閱以下代碼:-

這是我的 Button 在 xml 中的外觀,此處未使用android:onClick

    <Button
    android:id="@+id/btn1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="Button 1" />

這部分進入活動:-

    Context context = this;
    Button btn1 = (Button) findViewById(R.id.btn1);
    Button btn2 = (Button) findViewById(R.id.btn2);
    Button btn9 = (Button) findViewById(R.id.btn9);

    btn1.setOnClickListener(mClick);
    btn2.setOnClickListener(mClick);
    btn9.setOnClickListener(mClick);


View.OnClickListener mClick = new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.btn1: {
                Intent i1 = new Intent(context, First.class);
                startActivity(i1);
                break;
            }
            case R.id.btm2: {
                Intent i2 = new Intent(context, Second.class);
                startActivity(i2);
                break;
            }
            //create this for all 9 buttons
        }

    }
};

在頂部聲明您的按鈕; (在 oncreate 方法之前)

 Button yourbuttonname;

然后在 oncreate 方法上:

聲明按鈕的視圖:

yourbuttonname = (Button) findViewById(R.id.buttonNameInYourXML);
 yourbuttonname.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
       Intent intent = new Intent(ActualActivity.this, ActivityYouWantToGo.class);
                intent.putExtra("tag",valueassociatedtotag); // if you want to pass some data
                startActivity(intent)
            }
        });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM