2015-09-29 1 views
0

Я получаю вышеуказанное сообщение об ошибке при нажатии кнопки изображения. Я не уверен, в чем проблема. Все, что я пытаюсь сделать, это взять текст в объявлении текстового поля.Сообщение об ошибке: Caused by: java.lang.NoSuchMethodException: onClickShare [класс android.view.View]

XML

<?xml version="1.0" encoding="utf-8"?> 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:orientation="vertical" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:padding="10dip"> 

     <TextView 
      android:id="@+id/txtTitle" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:textStyle="normal|bold" 
      android:textSize="16dip" 
      android:padding="5dip" 
      android:text="Title" 
      android:textColor="#001a90" /> 

     <TextView 
      android:id="@+id/txtDescription" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:textStyle="bold" 
      android:textSize="18dip" 
      android:padding="5dip" 
      android:text="Description" 
      android:textColor="#000000" 
      android:textIsSelectable="false" /> 

     <ImageButton 
      android:layout_width="25dp" 
      android:layout_height="25dp" 
      android:id="@+id/imageButton8" 
      android:layout_gravity="center_horizontal" 
      android:onClick="onClickShare" /> 

     <View 
      android:layout_width="fill_parent" 
      android:layout_height="1dp" 
      android:id="@+id/separator1" 
      android:visibility="visible" 
      android:background="@android:color/darker_gray"/> 

    </LinearLayout> 

Java

public class rssitemview extends AppCompatActivity { 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.rssitemview); 
    } 

    public void onClickShare(View view){ 
     TextView txtDesc = (TextView) findViewById(R.id.txtDescription); 
     Intent intent = new Intent(Intent.ACTION_SEND); 
     intent.putExtra(Intent.EXTRA_TEXT, txtDesc.getText()); 
     intent.setType("text/plain"); 
     try { 
      startActivity(Intent.createChooser(intent, "Share Text...")); 
     } catch (android.content.ActivityNotFoundException ex) { 
      Toast.makeText(rssitemview.this, "There are no means to share.", Toast.LENGTH_SHORT).show(); 
     } 
     startActivity(intent); 
    } 
} 
+1

Вы использовали один и тот же макет для нескольких видов деятельности? – Blackbelt

+0

Единственное другое использование, вызывает тот же макет из другого действия, которое отображает элемент. Это может быть проблема? Это вызов 'rssadaptor = новый RSSListAdaptor (rssfeed.this, R.layout.rssitemview, itemlist, params [0]);' – Mohammed

+0

Попробуйте инициализировать ImageButton –

ответ

0

Решение этой проблемы было добавить OnClickListner внутри класса GetView в ListAdaptor.

public View getView(int position, View convertView, ViewGroup parent) { 
      View view = convertView; 
      ImageButton whBtn = null; 
      ImageButton fbBtn = null; 
      ImageButton twBtn = null; 

      if(null == view) 
      { 
       LayoutInflater vi = (LayoutInflater)rssfeedFragment.this.getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
       view = vi.inflate(R.layout.rssitemview, null); 
       whBtn = (ImageButton) view.findViewById(R.id.whBtn); 
       fbBtn = (ImageButton) view.findViewById(R.id.fbBtn); 
       twBtn = (ImageButton) view.findViewById(R.id.twBtn); 
      } 

      if (whBtn != null) { 
       whBtn.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View view) { 
         //Code goes here 
         } 
        } 
       }); 
      } 

      if (fbBtn != null) { 
       fbBtn.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View view) { 
         //Code goes here 
         } 
        } 
       }); 
      } 

      if (twBtn != null) { 
       twBtn.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View view) { 
         //Code goes here 
         } 
        } 
       }); 
      }