2016-11-03 3 views
0

Итак, объяснение моего приложения: основное действие должно вызвать второе действие, которое затем реализует фрагмент, чтобы отображать сведения о клике. Все это, похоже, идет хорошо, но в новом окне активности/подробностей есть TextView, который пользователь должен иметь возможность щелкнуть, чтобы перейти от «законченного» к «не законченному» и наоборот. В настоящий момент новый фрагмент загружается, но, похоже, он не распознает взаимодействие пользователя. Любая помощь будет оценена по достоинству. Благодаря!Проблемы с Android с помощью 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; 
} 
} 
+0

Где вы объявляете переменную 'finished'? И нажмите, где можно перейти от готового к не законченному. –

+0

Извините, я вырезал эту часть ... Я определил ее как логическую переменную для класса (прямо под первой строкой в ​​вышеприведенном фрагменте) –

+1

Если я не прочтю код, похоже, что он останется «законченным». Также я не вижу, где вы добавляете слушателя onClick в текстовое окно – snowCrabs

ответ

1

Установите переключатель прослушивания в TextView, чтобы поймать щелчок.

Например:

Первый зарегистрировать прослушиватель событий на вашем TextView.

textView1.setOnClickListener(this); 

И когда событие (клик) это произошло, и сделайте следующее:

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

Update:

Заменить, после которого у вас есть 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")); 
    } 
}); 

Примечание: я предлагаю использовать вместо setOnFocusChangeListenerOnClick. Получите содержимое TextView, и если оно заполнено или правильно, измените цвет фона, потому что если пользователь нажмет на TextView, фон изменится, даже без содержимого.

Вот код:

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

Я пробовал это, но он, похоже, не работает. У меня есть setOnClickListener, помещенный в метод onCreate() ... Правильно? –

+0

@ ValerieThomas проверяет обновление. –

0

Это потому, что вы проверить, если закончили верно в способе по созданию, это, однако только провериться в начале программы, два варианта вы являетесь:

  • Проверить, если она будет закончена в цикле в отдельном потоке (очень плохой вариант)

  • выполнения метода от метода OnClick и от oncreat e (только если это так)

+0

Извините, я не уверен, что вы подразумеваете под «запускать метод из метода onclick». Разве я не могу запустить какой-либо код из метода onclick? Я пробовал создать отдельный метод без особых результатов. –

Смежные вопросы