2012-02-15 10 views
0

イメージビューをボタンとして使用しようとしています。そのため、ユーザーが画像をクリックすると、differenot xmlファイルがレイアウトとして表示されます。レイアウト間を移動するボタンとしてimageViewを使用する

次のように私が変更されている

..

<ImageView 
      android:id="@+id/telugu" 
      android:layout_width="130dp" 
      android:layout_height="25dp" 
      android:layout_x="-34dp" 
      android:layout_y="315dp" 
      android:clickable="true" 
      android:onClick="myClickHandler" 

とmyClickHandlerが..です

public void myClickHandler(View view) { 
     switch (view.getId()) { 
     case R.id.arts: 
      setContentView(R.layout.arts); 
    case R.id.music: 
     setContentView(R.layout.music); 

問題は、私は特定のレイアウトに行くことができませんです。どの画像を選択しても同じレイアウトになります。

答えて

3

あなたのswitch文が間違っている

switch (view.getId()) { 
     case R.id.arts: 
      setContentView(R.layout.arts); 
    case R.id.music: 
     setContentView(R.layout.music); 
} 

は、あなたがあなたを許可されたスイッチで休憩を入れていない

switch (view.getId()) { 
     case R.id.arts: 
      setContentView(R.layout.arts); 
      break; 
    case R.id.music: 
     setContentView(R.layout.music); 
     break; 
} 

する必要がありますスイッチを押して次の文にドロップします。これは、あなたが呼び出すsetContentViewメソッドが常にあなたのスイッチの一番下にあることを意味します。私が示したことをそこにSと、あなたは、人々は、あなたが複数回setContentViewを呼び出すことはできませんアイデアを取得しているところ

私はわからないんだけど、行ってもいいだろう。「破る」を追加します。これは確かに可能であり、私は確かにそれを自分でテストした。

問題は、単にsetContentViewを呼び出すときに、画面上のデータを管理付属しています。 画面上に2つのボタンがあるレイアウトを持っていて、画面上の3つのボタンで1つに切り替える場合は、コード内のレイアウトを何とか区別する必要があります。この場合、新しい活動全体を使用するほうが良い選択肢になります。ロジックコードが少なく、全体的に管理が簡単です。しかし、同じアクティビティでsetContentViewを2回以上呼び出すことが適切な答えであるケースがあると確信しています

0

は、アクティビティごとに2回以上setContentView()を呼び出すことはできません。@dymmehは問題であるbreak文について正しくあります。

私はあなたがまだあなたが1つのアプリケーション内で表示されているレイアウトに変更するかuse something like ViewSwitcherを検討すべきだと思います。または、異なるレイアウトを独自のアクティビティに分割することで、戻るボタンを使用してアプリケーションを「うまく」再生できるという利点があります。

Here is a nice view switcher tutorialあなたはそのルートを行くことを選択した場合。

+0

ティムは、あなたは確か。複数回の活動につきよりsetContentViewを呼び出すことができますあなたはそれができないと言って、間違っています。 – dymmeh

+0

私の間違い、何らかの理由でうまくいかない印象を受けました。 – FoamyGuy

+0

それは働く..おそらく最良のアイデアではない:P – dymmeh

1

xmlファイル用に別のクラスを作成する必要があります。 arts.java arts.xml、music.java music.xmlがあります。その後、呼び出し、その活動に行く意思

ImageView buttonLA = (ImageView) findViewById(R.id.buttonLouisiana); 
    buttonLA.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      Intent myIntent = new Intent(arts.this, music.class); 
      startActivityForResult(myIntent, 0); 
     } 
    }); 
0

別個のクラスを作成します。このようにImageView OnClcikListenerアクションを使用できます。

ImageViewの静脈=(ImageViewの)findViewById(R.id.imageView1)。それはおそらく1にそれぞれに異なるレイアウトや変数のすべてを管理するために熊に変身しますが iv.setOnClickListener(新OnClickListener(){

 public void onClick(View v) { 
      // TODO Auto-generated method stub 
      Intent iv=new Intent(); 
      iv.setClass(getApplicationContext(), art.class); 
      startActivity(iv); 
     } 
    }); 
+0

別々のクラスを使用する利点は何ですか? –