java从MainActivity启动不同的活动
我是新来的,我想我在Java中犯了一个错误,但我不知道如何纠正它。大多数有类似问题的人都有更复杂的项目,我无法通过查看他们的代码来解决我的问题
我想使用不同的按钮(其中9个)来启动不同的活动,但当我开始添加第二个按钮时,只会弹出活动1(LeftArmaActivity)。无论我在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);
}
}
# 1 楼答案
//问题是您两次调用startActivity()并从Activity传递getActivity()
# 2 楼答案
在顶部声明您的按钮;(在oncreate方法之前)
然后在oncreate方法上:
声明按钮的视图:
# 3 楼答案
您说过您有9个按钮,因此我认为您应该在这种情况下使用开关盒,请参见以下代码:-
下面是我的按钮在xml中的外观。这里没有使用
android:onClick
本部分用于以下活动: