2017-06-06 13 views
-2

私はここで新しいです。私はJavaで間違いを犯したと思いますが、修正方法はわかりません。同様の問題を抱えている人々の多くは、はるかに複雑なプロジェクトをしていましたが、コードを見て問題を解決できませんでした。MainActivityとは別のアクティビティを開始します

さまざまなアクティビティを開始するために異なるボタン(9個)を使いたいのですが、2番目のボタンを追加するときは、アクティビティ1(LeftArmActivity)だけがポップアップしました。 HeadActivityを起動するための適切なメソッドを呼び出すためにXMLで変更されたものがあれば、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

は、次のコードを参照してください - ここでは

を私のボタンは何のが

<Button 
    android:id="@+id/btn1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:text="Button 1" /> 
ここで使用されていないXMLでどのように見えるかです

この部分は、活動に行く: - あなたのボタンを宣言上部には

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()を2回呼び出し、getActivity()をActvityから渡しているという問題があります。あなたはとても私はuが、このようなシナリオでスイッチケースを使うべきだと思うあなたは9つのボタンを持っていると述べた

+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) 
      } 
     }); 
関連する問題