因此,首先解释一下我的应用程序:主要活动应该调用第二个活动,然后实现一个片段以显示有关单击列表项的详细信息。所有这些似乎都没问题,但在新的活动/细节窗口中,有一个用户应该能够点击的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;
}
}
答案 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方法运行方法(仅当它为真时)