2016-11-03 50 views
0

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

更新:

更换,你必须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. 
    } 
}); 
+0

我试过这个,但它似乎并没有工作。我在onCreate()方法中放置了setOnClickListener ...是吗? –

+0

@ValerieThomas检查更新。 –

0

那是因为你检查完了是在上创建方法真实的,这一点,但是只会在节目的开始,得到检查你有两种选择:

  • 检查它是否是在一个循环中完成了在一个单独的线程(VERY BAD OPTION)

  • 从运行的onclick方法的方法,并从oncreat e方法(只有它是真的)

+0

对不起,我不知道你'通过onclick方法运行方法'是什么意思。我不应该能够在onclick方法中运行任何需要的代码吗?我试过创建一个单独的方法,没有太多结果。 –