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