可点击TextView的Android问题

时间:2016-11-03 19:40:20

标签: android android-fragments onclick textview clickable

因此,首先解释一下我的应用程序:主要活动应该调用第二个活动,然后实现一个片段以显示有关单击列表项的详细信息。所有这些似乎都没问题,但在新的活动/细节窗口中,有一个用户应该能够点击的TextView,以便从“完成”更改为“未完成”,反之亦然。现在新片段加载,但它似乎不能识别用户的交互。任何帮助,将不胜感激。谢谢!

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;
}
}

2 个答案:

答案 0 :(得分:1)

在TextView上设置单击侦听器以捕获单击。

例如:

首先在TextView上注册事件监听器。

textView1.setOnClickListener(this);

一旦发生事件(点击)并执行以下操作:

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

<强>更新

替换以下onCreate

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

使用:

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"));
   }
});

注意:我建议使用setOnFocusChangeListener代替OnClick。获取TextView的内容,如果填充或更正,则更改背景颜色,因为如果用户点击TextView,背景将会改变,即使没有内容也是如此。

以下是代码:

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

答案 1 :(得分:0)

那是因为你在on create方法中检查是否为true,但是这只会在程序开始时检查,你有两个选项:

  • 检查它是否在一个单独的线程中循环完成(非常糟糕的选项)

  • 从onclick方法和oncreate方法运行方法(仅当它为真时)