2012-04-19 2 views
0

Я пытаюсь надуть вид, содержащий Scrollview и я получаю ClassNotFoundException android.view.scrollview когда Раздувание вид на следующей строке:ClassNotFoundException android.view.scrollview когда Раздувание вид

Просмотр макета = Inflater. надуть (R.layout.news_article, null, true);

Я не могу найти что-то плохое, и проблема с googling не помогла мне (к несчастью).

С другой стороны, это также является обходным путем для того, что я не знаю, как это сделать.

Ситуация: У меня есть вкладка с 3 вкладками. На каждой вкладке у меня есть список, содержащий новостной элемент. Когда я нажимаю на элемент новостей, я хочу, чтобы макет listview переключался с помощью xml-макета, который я теперь использую для всплывающего окна (это своего рода обман, но я не знаю, как это сделать правильно). Поэтому, если у кого-то есть способ сделать это, а не использовать всплывающее окно, это будет лучшим ответом для меня.

метод, где я раздуть макет:

@Override 
public void onClick(View v) 
{ 
    //setContentView(R.layout.news_article); 
    final PopupWindow popUp; 
    LayoutInflater inflater = (LayoutInflater)NewsActivity.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    View layout = inflater.inflate(R.layout.news_article, null, false); 
    Display display =GetWindowManager().getDefaultDisplay(); 
    int popUpWidth = display.getWidth(); 
    int popUpHeight = display.getHeight(); 

    popUp = new PopupWindow(layout, popUpWidth, popUpHeight, true); 
    popUp.setOutsideTouchable(true);      

    popUp.setTouchInterceptor(new OnTouchListener() 
    { 
     @Override 
     public boolean onTouch(View v, MotionEvent event) 
     { 
     System.out.println("Touch Intercepted"); 
     if(event.getAction() == MotionEvent.ACTION_OUTSIDE) 
     { 
      popUp.dismiss(); 
     } 
      return false; 
     } 
    }); 

    popUp.showAtLocation(getListView(), Gravity.TOP, 0, 75); 
} 

код XML для макета:

<?xml version="1.0" encoding="utf-8"?> 
<Scrollview 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/news_article_scroll" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

    <RelativeLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="#ffffffff"> 

    <ImageView 
     android:id="@+id/news_article_icon" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentLeft="true" 
     android:src = "@drawable/ic_launcher"/> 

    <TextView 
     android:id="@+id/news_article_header" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textSize="20dp" 
     android:textColor="#000000" 
     android:layout_toRightOf="@+id/news_article_icon" 
     android:layout_marginTop="10dp" 
     android:text="Header" /> 

    <TextView 
     android:id="@+id/news_article_text" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/news_article_icon" 
     android:layout_marginTop="10dp" 
     android:textColor="#000000" 
     android:text="Text" /> 

</RelativeLayout> 
</Scrollview> 

** * ****EDIT* ** * **** Хорошо, теперь показывает всплывающее окно, но я не получаю никаких событий от него

+2

Должен быть ScrollView, а не Scrollview. Капитализуйте v – gngr44

+0

Я полностью пропустил эту опечатку, спасибо! Всплывающее окно все еще не отображается, но я мог бы добиться прогресса. – Myth1c

ответ

0

Когда вы раздуть макет вы не устанавливали parentView, но вы установите флаг true

View layout = inflater.inflate(R.layout.news_article, null, true); 

Установите флаг ложь и добавить вид, где вам это нужно.

View layout = inflater.inflate(R.layout.news_article, null, false); 
myParentViewGroup.add(layout); 
+0

Когда я пытаюсь это сделать, я получаю следующую ошибку: java.lang.UnsupportedOperationException: addView (View) не поддерживается в AdapterView. Похоже, вы не можете добавить что-то в ListView? – Myth1c

1

Я попробовал это в моем коде, и она работает, когда я меняю Scrollview в ScrollView в файле XML:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

</ScrollView> 

XML-правильно, если вы пишете с маленькой «против», но надуватель не признает его и требует капитала V.

Вы можете видеть это очень легко, когда вы помещаете блок catch try вокруг него и проверяете исключение, потому что оно говорит об этом.

+0

Нет, он этого не делал! news_article - это имя макета-файла и news_article_scroll идентификатор HorizontalScrollView! – kyp

+0

Спасибо, что указали это. – Myth1c