Android问题与可点击的TextView



所以,首先解释一下我的应用程序:主活动应该调用第二个活动,然后实现一个片段,以显示关于单击列表项的详细信息。所有这一切似乎都很好,但在新的活动/细节窗口内,有一个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;
}
}

在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.
   }
});

这是因为您在on create方法中检查finished是否为真,然而,这只会在程序开始时检查,您有两个选项:

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

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

相关内容

  • 没有找到相关文章

最新更新