0

로고를 왼쪽으로 정렬 한 다음 오른쪽에 범주 목록을 표시하려는 응용 프로그램에서 작업하고 있습니다. 그래서 제가 가지고있는 것은 Linear Layout에있는 이미지 뷰의 로고입니다. 그런 다음 ListView를 LinearLayout에 추가하여 동일한 작업을 수행 할 수 있습니다. 실행하려고하면 예기치 않게 오류가 발생합니다.LinearLayout with Imageview 및 Listview

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    Commands.setText("Commands"); 
    LinearLayout LL = new LinearLayout(this); 

    ImageView Logo = (ImageView)findViewById(0x7f020000); 
    Logo.setImageDrawable(getResources().getDrawable(android.R.drawable.ic_menu_myplaces)); 

    ListView Cats = new ListView(this); 

    String Categories[] = new String[3]; 
    Categories[0] = "Hardware"; 
    Categories[1] = "Language"; 
    Categories[2] = "Libraries"; 
    ArrayAdapter<String> list = new ArrayAdapter<String>(this, 0, 2, Categories); 

    Cats.setAdapter(list); 
    LL.addView(Logo); 
    LL.addView(Cats); 
    setContentView(LL); 

} 

어떤 도움, 나는

답변

0

좋아 정말 혼란 스러워요. 문제는 onCreate()에서 setContentView()를 호출하지 않은 것입니다.

분명히 안드로이드는 그 id가 ImageView이 될 곳을 알지 못하기 때문에 아마도 Null Pointer를 실행할 것입니다. 안드로이드는 XML의 고해상도/레이아웃 폴더에서 레이아웃을 생성하고 팽창하는 당신이 당신의에서 onCreate 방법을로드 할 때

, thsi 라인 전에 onCreate()에 레이아웃을 만들 수

ImageView Logo = (ImageView)findViewById(0x7f020000); 
0

가장 쉬운 방법은 setContentView() 추가 . 예를 들어이 XML 당신이 찾고있는 무엇을 달성 할 수 있습니다

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="horizontal" > 
    <ImageView 
     android:id="@+id/(name for image view)" 
     android:layout_width="(some size)" 
     android:layout_height="(some size)" 
    > 
    </ImageView> 

    <ListView 
     android:id="@+id/(name for list view)" 
     android:layout_width="(some size)" 
     android:layout_height="fill_parent"> 
    </ListView> 
<LinearLayout> 

당신은 XML로 레이아웃을 만드는 방법에 대한 많은 자습서를 찾을 수 있어야합니다.