2017-06-06 60 views
-2

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

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

@UPDATE

好吧,我用的開關下面推薦的,但現在的應用程序將無法啓動:/

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); 


} 

}

+0

是什麼錯誤? – Zoe

+0

使用getApplicationContext – sivaprakash

+0

你能發表更多的代碼嗎? –

回答

0

你說你有9個按鍵,所以我覺得你應該使用開關的情況下在這樣的情況下看到下面的代碼: -

這裏是我的按鈕看起來如何在XML中沒有用在這裏

<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 
     } 

    } 
}; 
+0

看起來不錯,謝謝,但我試圖實現這一點,現在所有崩潰。我更新了與我實施的問題。 – Lordz

+0

好吧,修好了,現在正常工作。我在聲明這些值時遇到了一些麻煩,但現在一切正常。非常感謝你的幫助! – Lordz

+0

歡迎,快樂編碼:-) –

1

更新您的代碼與此

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()兩次,並從Actvity傳遞getActivity()。

+0

它不工作:( – Lordz

+0

讓我看看你的按鈕的XMl –

+0

http://www.wklej.org/id/3195826/ – Lordz

0

在頂部聲明你的按鈕; (前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) 
      } 
     });