2016-03-19 4 views
-1

Я довольно новичок в программировании, но у меня есть список, отображающий содержимое базы данных. Он также имеет кнопку, которую можно нажать. код im, с которым возникают проблемы, находится в моем классе адаптера для списка. В идеале я хотел бы передать информацию о строке, в которой кнопка была нажата в новом действии. пока я выберу startActivity, я могу изменить текст кнопки, чтобы я знал, что кнопка работает, но как только я попытаюсь добавить startActivity, она просто рухнет. активность, которую я пытаюсь открыть, - это просто так, что я знаю, что могу заставить кнопку работать (отсюда и называется ее успех), поэтому я могу реализовать ее в другом приложении. может кто-то помочь мне в том, почему новая деятельность не открывается и как ее исправлять, заранее.Задание внутри onclicklistener на адаптере listview

@Override 
public View getView(int position,View convertView,ViewGroup parent) 
{ 

    View row = convertView; 
    final LayoutHandler layoutHandler; 
    if(row == null) 
    { 
     LayoutInflater layoutInflater = (LayoutInflater)this.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     row = layoutInflater.inflate(R.layout.row_layout,parent,false); 
     layoutHandler = new LayoutHandler(); 
     layoutHandler.NAME = (TextView)row.findViewById(R.id.tvViewRow); 
     layoutHandler.BtntoClick = (Button)row.findViewById(R.id.BtnToClick); 
     row.setTag(layoutHandler); 


    } 
    else 
    { 
     layoutHandler = (LayoutHandler) row.getTag(); 
    } 
    DataProvider dataProvider = (DataProvider)this.getItem(position); 
    layoutHandler.NAME.setText(dataProvider.getName()); 

// этот метод после того, как кнопка была нажата Последняя кнопка BTN = layoutHandler.BtntoClick;

btn.setOnClickListener(new View.OnClickListener(){ 


     @Override 
     public void onClick(View view) { 

      btn.setText("clicked"); 
      Log.e("intent builder", "onClick method started"); 
      Intent intent = new Intent(ListDataAdapter.this, Success.class); 
      startActivity(intent); 


     } 

     private void startActivity(Intent intent) { 

     } 


    }); 

    return row; 


} 
+0

что трассирование? и в манифесте – krisC

+0

http://stackoverflow.com/questions/3988788/what-is-a-stack-trace-and-how-can-i-use-it-to-debug-my-application-errors –

ответ

0

Проблема может быть в своем намерении, но я не совсем уверен, не зная имя вашей деятельности

Intent intent = new Intent(ListDataAdapter.this, Success.class); 

Если ListDataAdapter ваша текущая деятельность, из которой ваш вызов функции, то это хорошо, если не тогда он нуждается в изменении.

Также я не уверен, что этот код для

 private void startActivity(Intent intent) { 

    } 

Стек трассировки будет полезно

+0

Честно говоря, я не уверен, является ли ListDataAdapter классом как активным, потому что у него нет прикрепленного к нему файла XML. он вызывается из действия, называемого DataListActivity, потому что его адаптер для listView. этот код существует, потому что, когда я впервые набрал код, все намерение было подчеркнуто, и когда я нажал на лампочку, он вставил этот код, теперь он только подчеркивает, что в скобках говорит «не может разрешить конструктор». также я не слишком уверен, что вы подразумеваете под трассировкой стека? – krisC

+0

Насколько мне известно, функция startActivity не нужна, а ListDataAdapter.this должно быть названием активности, из которой вы хотите перейти. Поэтому я считаю, что это должно быть DataListActivity. – Tony

+0

Теперь я вынул функцию startActivity и изменил его на DataListActivity.this, и теперь он подчеркивает startActivity (намерение) и говорит: «startActivity() в ActivityCompat connot применяется к» и изменен на DataListActivity. Это говорит о том, что «DataListActivity не охватывающий класс " – krisC