2017-06-06 62 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) 
      } 
     });