2016-11-03 28 views
0

私のアプリの説明は最初です:主なアクティビティは2番目のアクティビティを呼び出すことになっています。この2番目のアクティビティは、クリックされたリストアイテムの詳細を表示するためにフラグメントを実装します。これはすべてうまくいくようですが、新しいアクティビティ/詳細ウィンドウ内には、ユーザーが「終了」から「終了していません」に変更するためにクリックできるテキストビューがあります。今は新しいフラグメントが読み込まれますが、ユーザーからのインタラクションを認識していないようです。どんな助けもありがとう。ありがとう!クリック可能なTextViewのAndroidの問題

public class ListActivity extends Activity implements ListSelectionFragment.OnListFragmentInteractionListener, View.OnClickListener { 


private boolean finished=FALSE; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    ListSelectionFragment detailFrag = ListSelectionFragment.newInstance(displayMode, position, page); 
    FragmentManager fragmentManager = getFragmentManager(); 
    FragmentTransaction fragmentTransaction = fragmentManager 
      .beginTransaction(); 
    fragmentTransaction.add(R.id.item_frame, detailFrag); 
    fragmentTransaction.commit(); 

    findViewById(R.id.item_frame).setVisibility(View.VISIBLE); 

    TextView textView1 = (TextView) findViewById(R.id.list_item_name); 
    textView1.setText(displayMode); 

    if(finished==TRUE) { 
     TextView textView2 = (TextView) findViewById(R.id.completebtn); 
     textView2.setText("Finished"); 
     textView2.setTextColor(Color.parseColor("#000000")); 
    } 

    TextView completeBtn = (TextView) findViewById(R.id.completebtn); 
    completeBtn.setOnClickListener(this); 
} 

@Override 
public void onClick(View v) { 
    TextView textView = (TextView) findViewById(R.id.completebtn); 
    textView.setText("Finished"); 
    finished=TRUE; 
} 
} 
+0

ここで、変数 'finished'を宣言していますか?そして、終了する場所から終了しない場所に変更する場所をクリックします。 –

+0

申し訳ありませんが、私はその部分を切り捨てました...私はクラスのブール変数として定義しました(上のスニペットの最初の行のすぐ下) –

+1

コードを読んでいない限り、 "終了"のままになります。また、テキストビューにonClickリスナーを追加する場所がわかりません – snowCrabs

答えて

1

クリックを捕捉するためにTextViewのクリックリスナーを設定します。例えば

まず、あなたのTextViewにイベントリスナーを登録します。

textView1.setOnClickListener(this); 

とイベントに一度(クリック)が起こったと、次の手順を実行している:

@Override 
public void onClick(View v) { 
    finished=TRUE; 
} 

更新:

if(finished==TRUE) { 
    TextView textView2 = (TextView) findViewById(R.id.completebtn); 
    textView2.setText("Finished"); 
    textView2.setTextColor(Color.parseColor("#000000")); 
} 

をあなたはonCreateを持って次のように置き換えます

付:

textView1.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 
     TextView textView = (TextView) findViewById(R.id.completebtn); 
     textView.setText("Finished"); 
     finished=TRUE; 
     TextView textView2 = (TextView) findViewById(R.id.completebtn); 
     textView2.setText("Finished"); 
     textView2.setTextColor(Color.parseColor("#000000")); 
    } 
}); 

注:私が代わりにsetOnFocusChangeListenerOnClickを使用することをお勧めします。 TextViewの内容を取得し、それが満たされていれば、背景色を変更してください。ユーザーがTextViewをクリックすると、内容がなくても背景が変わります。ここで

コードです:終了したかどうかをチェックするので

textView1.setOnFocusChangeListener(new OnFocusChangeListener() { 
    @Override 
    public void onFocusChange(View v, boolean hasFocus) { 
     // Put your code here, what you want to execute. 
    } 
}); 
+0

これを試しましたが、動作していないようです。私はsetOnClickListenerをonCreate()メソッドに置いています...そうですか? –

+0

@ValerieThomasがアップデートを確認します。 –

0

ザッツメソッドを作成する上で真である、これは、しかし、唯一のプログラムの開始時にチェックしてしまいます、あなたが持っている2つのオプションがあります。

  • それが別のスレッド(VERY BAD OPTION)のループ内に終了したかどうかを確認

  • はonclickの方法からとoncreatからメソッドを実行eメソッド(真の場合のみ)

+0

申し訳ありませんが、私はあなたが 'onclickメソッドからメソッドを実行する'ことを意味するかどうかはわかりません。 onclickメソッド内から必要なコードを実行することはできませんか?私は、多くの結果を出すことなく、別の方法を作成しようとしました。 –

関連する問題