2017-01-24 4 views
-1

私はアクティビティにいくつかのオブジェクトを持っています。私はそれらのアクションを実行する前にIDを確認したいと思います。私はそれについて移動するかどうかはわかりませんが、私が試した:オブジェクトを見るid

if (v.getId().contains("empty")){ 

をそれがエラーを与えた後、私は

if (v.getId() == "[attr^=empty]"){ 

を試してみましたが、それも間違っています。正直言って私はこれらの両方が適切な割り当てなどを使用していないことを認識していますが、IDに特定の部分文字列が含まれているかどうかをチェックする方法は本当に失われています...誰かが助けてくれれば感謝します

PS:vはViewオブジェクトです

+4

'v.getId()'はintを返します。 'int'と' string'を比較することはできません。 –

+0

はい、私はそれを見ましたが、どのように動作するのか混乱しています。つまり、xmlファイル内のImageViewなどのオブジェクトを定義すると、そのオブジェクトにID(例:android:id = "@ id/empty1")を与え、java/activityでビューオブジェクトを使用するとビューオブジェクト(View emptySpot = findViewById(R.id.empty1))として定義する必要があります。そのため、特定のIDが文字列として扱われていないことを確認するにはどうすればよいですか? string.valueof()を適用する必要がありますか? ... – user7437489

答えて

0

v.getId()は整数を返します。

switch (v.getId()){ 
    case R.id.ViewElement1: 
      //do something here 
      break; 

    case R.id.ViewElement2: 
      //do something here 
      break; 

    case R.id.ViewElement3: 
      //do something here 
      break; 
} 

何このコードはありませんが、それは、スイッチケースブロックを通してそれを比較し、あなたのビューのIDを取得していることである:ような何かを行う前にidをチェックするために、私は何かをお勧めします。 idがv.getId()から取られた場合、caseブロック内のコードが実行されます。 break;が重要です。それ以外の場合は、実行されたコードの下のコードも実行されます。あなたのスタイルに合っていれば、if-elseに対してもこれを行うことができます。

String ResourceIdAsString = v.getResources().getResourceName(v.getId()); 

をし、Stringオブジェクトの操作が含まれている場合、あなたはあなたの操作を行うことができます。

あなたは文字列としてIDを取得したい場合は、試すことができます。

+0

これは私が現在やっていることですが、私は空で始まるIDを持つ他のすべてのビューに同じアクションを適用するデフォルトのケースを持っていますが、私はパーツだけをチェックする方法はわかりませんidのか、それは不可能ですか? – user7437489

+0

@ user7437489私は自分の答えを更新しました。 – Razgriz

0

あなたが達成しようとしていることは完全にはわかりません。そこで、idの仕組みの概要をいくつか紹介します。あなたが同じことを、いくつかのビューを持っている場合は

switch(view.getId()){ 

    case R.id.myTextView1: 

    break; 

} 

まずあなたのようxmlidにあなたの意見のすべてを持っている:あなたのJavaコードに続いて

<TextView 
    android:height="wrap_content" 
    android:weight="match_parent" 
    android:id="@+/myTextView" /> 

は次のようにスイッチケースを使用しますあなたはそれらを次のように使うことができます:

switch(view.getId()){ 

    case R.id.myTextView1: 
    case R.id.myTextView2: 
    case R.id.myTextView3: 
    case R.id.myTextView4: 
     perfomeSomeAction(); 
    break; 

} 
+0

あなたの答えが私のものとどう違うのですか?あなたは最後のコードブロックで 'break;'ステートメントを忘れてしまった。 – Razgriz

関連する問題