2013-12-10 74 views
-1

我試圖在Android中運行一個項目,但它試圖執行它時崩潰:我真的不明白我得到的logCat消息,所以我想看看是否有人可以幫助我在瞭解他們。項目上的Android logcat錯誤

下面是我的一些錯誤:

FATAL EXCEPTION: MAIN 
java.lang.RunTimeException: Unable to start activity componentInfo (com.example.logger/com.example.logger.ThirdActivity):java.lang.RuntimeException: your content must have a ListView whose id attribe is 'android.R.id.list'; 
Caused by: java.lang.RuntimeException: your content must have a ListView whose id attribute is 'android.R.id.list'; 
at.com.example.logger.ThirdActivity.onCreate (ThirdActivity:java:18) 

Android清單

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.logger" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk 
     android:minSdkVersion="8" 
     android:targetSdkVersion="18" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name="com.example.logger.MainActivity" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name="com.example.logger.SecondActivity" 
      android:label="@string/title_activity_second" 
      ></activity> 

     <activity 
      android:name="com.example.logger.ThirdActivity" 
      android:label="@string/title_activity_third" > 
     </activity> 

    </application> 

</manifest> 

末清單

主要活動

package com.example.logger; 

import android.os.Bundle; 
import android.app.Activity; 
import android.content.Intent; 
import android.view.Menu; 
import android.view.View; 
import android.view.View.OnClickListener; 

public class MainActivity extends Activity implements OnClickListener { 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    attachHandlers(); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 


private void attachHandlers() { 
    findViewById(R.id.login).setOnClickListener(this); 
} 

@Override 
public void onClick(View arg0) { 
    if(arg0.getId() == R.id.login) 
    { 
     Intent i = new Intent(this, SecondActivity.class); 
     startActivity(i);  
    } 

} 

}

結束主要活動

SecondActivity

package com.example.logger; 

import android.os.Bundle; 
import android.annotation.SuppressLint; 
import android.app.Activity; 
import android.app.Fragment; 
import android.app.FragmentManager; 
import android.content.DialogInterface; 
import android.content.DialogInterface.OnClickListener; 
import android.support.v4.app.FragmentStatePagerAdapter; 
import android.support.v4.view.PagerAdapter; 
import android.support.v4.view.ViewPager; 
import android.view.LayoutInflater; 
import android.view.Menu; 
import android.view.View; 
import android.widget.ImageView; 
import android.view.ViewGroup; 

public class SecondActivity extends Activity { 
private static final int NUM_PAGES = 10; 

private ViewPager mpager; 

private MyPagerAdapter mPagerAdapter; 
private int [] pics = {R.drawable.android_interfaz_layout_estructura_final, R.drawable.baixa, R.drawable.baixada, R.drawable.greenprogressbar, 
     R.drawable.layout_keyboard, R.drawable.linerlay, R.drawable.merge1, R.drawable.o2zds, R.drawable.regbd, 
     R.drawable.s7qrs}; 

@SuppressLint("NewApi") 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_second); 
    mPagerAdapter = new MyPagerAdapter(null); 
    mpager = (ViewPager) findViewById(R.id.viewer); 
    mpager.setAdapter (mPagerAdapter); 
} 

public void showImage (int position, View view) 
{ 
    //View is your view that you returned from instantiateItem 
    //and position is it's position in array you can get the image resource id 
    //using this position and set it to the ImageView 
} 

private class MyPagerAdapter extends PagerAdapter 
{ 

    SecondActivity activity; 
    public MyPagerAdapter (SecondActivity activity){ 
     this.activity=activity; 
    } 


    @Override 
    public int getCount() { 
     // TODO Auto-generated method stub 
     return pics.length; 
    } 

    @Override 
    public boolean isViewFromObject(View arg0, Object arg1) { 
     // TODO Auto-generated method stub 
     return false; 
    } 

    @Override 
    public Object instantiateItem(View collection, int position) { 
     ImageView view = new ImageView (SecondActivity.this); 
     view.setImageResource (pics[position]); 
     ((ViewPager) collection).addView(view, 0); 
     return view; 
    } 

    @Override 
    public void setPrimaryItem (ViewGroup container, int position, Object object) 
    { 
     super.setPrimaryItem (container, position, object); 
     activity.showImage(position,(View)object); 
    } 

    } 


@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.second, menu); 
    return true; 
} 


private OnClickListener mPageClickListener = new OnClickListener() 
{ 
public void onClick (View v) 
{ 
    // TODO Auto-generated method stub 
    //aquí anirà la funció per traslladar la image de la gallery a la pantalla 
    Integer picId = (Integer) v.getTag(); 
    mpager.setVisibility(View.VISIBLE); 
    mpager.setCurrentItem(v.getId()); 

} 

@Override 
public void onClick(DialogInterface dialog, int which) { 
    // TODO Auto-generated method stub 

} 

    }; 

}

完第二個活動

第三活動

package com.example.logger; 

import android.os.Bundle; 
import android.app.Activity; 
import android.app.ListActivity; 
import android.view.Menu; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.ListView; 

public class ThirdActivity extends ListActivity implements OnClickListener { 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_third); 
    final ListView listview = (ListView) findViewById(android.R.id.list); 
    String[] values = new String[] {"One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", 
      "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen", 
      "Twenty"}; 
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.activity_third, android.R.id.list, values); 
    setListAdapter(adapter); 


} 

    @Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.third, menu); 
    return true; 

    } 

    public void attachButton() 
    { 
     findViewById(R.id.add).setOnClickListener(this); 

    } 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 

    } 

}

結束第三活動

activity_main.xml中

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:orientation="vertical" 
    tools:context=".MainActivity" > 

     <Button 
     android:id="@+id/login" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="@string/Login" 
     android:layout_alignParentBottom="true" 
     android:background="@drawable/shapes" 
     android:textColor="@color/text" 
     /> 

    <EditText 
     android:id="@+id/username" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:hint="@string/input_u" 
     android:layout_marginTop="10dp" 
     android:textColor="@color/text" 
     /> 

    <EditText 
     android:id="@+id/password" 
     android:layout_below="@+id/username" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:hint="@string/input_p" 
     android:layout_marginTop="10dp" 
     android:textColor="@color/text" 
     /> 

</RelativeLayout> 

結束activity_main.xml中

Activity_Second.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".SecondActivity" > 


    <android.support.v4.view.ViewPager 
     android:padding="16dp" 
     android:id="@+id/viewer" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="10dp" 
     android:layout_weight="0.70" 
     /> 

    <ImageView 

     android:id="@+id/big_image" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="10dp" 
     android:layout_below="@+id/viewer" 
     android:layout_weight="0.30" 

     /> 

</RelativeLayout> 

結束Activity_Second.xml

**Activity_Third.xml** 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".ThirdActivity" > 

    <Button 
     android:id="@+id/add" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:text="@string/add" 
     /> 

    <ListView 
     android:id="@+id/list" 
     android:layout_width="match_parent" 
     android:layout_below="@+id/add" 
     android:layout_height="wrap_content" 

      ></ListView> 

</RelativeLayout> 

結束Activity_Third.xml

我如果有人能幫我弄清楚我在這個項目上做錯了什麼,我會非常感激。

此致敬禮

毛羅。

回答

2

改變你的ListView

的ID從

android:id="@+id/list" 

android:id="@android:id/list" 

的Android無法找到您ListView,因爲你給它不正確的ID。

0

它說,在ThirdActivity.java的onCreate方法,您需要設置包含一個ListView ID爲內容的「android.R.id.list」

你的內容是在third_activity.xml描述文件。

所以在third_activity.xml,你的列表視圖中應該有這樣的ID:

<ListView 
    android:id="@android:id/list" 

,而不是

android:id="@+id/list" 

(查看這個帖子如果需要Listview error: "Your content must have a ListView whose id attribute is 'android.R.id.list'"

+0

非常感謝你。 – user3082271

+0

如果有效,您可以接受答案:-) –