2016-12-03 3 views
1

どのように入手できますか可読特定レイアウトのIDはありますか?私activity_miejsce.xmlファイルのインテントを送信するレイアウトの読み取り可能なIDを取得する方法は?

フラグメント:このレイアウトの

  <LinearLayout 
     android:id="@+id/elementPlace" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     android:background="@drawable/layout_main_menu_selector" 
     android:clickable="true" 
     android:onClick="Place"> 

     ... 

    </LinearLayout> 

活動:

public class PlacesActivity extends AppCompatActivity { 

LinearLayout element; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_places); 

    element = (LinearLayout) findViewById(R.id.elementPlace); 
} 

public void Place(android.view.View v){ 
    Intent place = new Intent(this, Miejsce.class); 
    place.putExtra("source", element.toString()); 
    startActivity(place); 
}} 

Miejsce.java(私たちの意図の先):

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_miejsce); 

    Intent src = getIntent(); 
    String source = src.getStringExtra("source"); 

    TextView msg = (TextView) findViewById(R.id.napis); 
    msg.setText(getIntent().getStringExtra("source")); 

    Toast.makeText(getApplicationContext(), "Source: " + source, Toast.LENGTH_SHORT).show(); 
} 

結果(トーストから): 出典:android.widget.LinearLayout {14e02738 VE..C。 ... P .... 0,165-1080,375#7f0c007e app:id/elementPlace}

Miejsce.javaはソースに依存するレイアウトを生成するため、特定のレイアウトのIDを使用します。 例:3つのレイアウト(ホテル、ガソリンスタンド、レストラン)があります。ユーザーがそのうちの1つ(@ + id/restaurant)をクリックし、ソース(トリガー)のIDでインテントが送信されました。 Javaコードは、レストランとの特別なレイアウトを生成しました。

+0

http://stackoverflow.com/questions/10137692/how-to-get-resource-name-from-resource-id – Jackowski

+0

それが働いて、ありがとうございます! – h3wro

答えて

1

すでにID名が分かっているので、私は言っているでしょう String id_name = "R.id.id_name"のようにして、あなたの意図を伝えることができます。

+0

不幸なことに、もっと多くのレイアウトがあり、クリックのソースを特定するのに役立つものを探していますが、あなたの答えに感謝します! :) – h3wro

+0

@ h3wro、大丈夫私はあなたを得ると思います。あなたはクリックされる元のビューのidを渡すことができます。 IDは整数として格納されます。受信側で行う必要があるのは、取得したIDのswitch文を使用することだけです。 –

+0

** contains()**は、指定された文字列にsourceのidが含まれているかどうかを確認するのに適しています。 – h3wro

0

ありがとうございます。link @Jackowski。 PlacesActivity.java変更後:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_places); 
} 

public void Place(android.view.View v){ 
    switch(v.getId()){ 
     case R.id.elementPlace: 
      Intent place = new Intent(this, Place.class); 
      place.putExtra("source", "elementPlace"); 
      startActivity(place); 
      break; 
    } 
} 
関連する問題