2013-12-10 34 views
-1

我得到了錯誤約錯誤與setListAdapter和getListview

setListAdapter(new ArrayAdapter<String>(this,  android.R.layout.simple_list_item_1,ACTIVITY_CHOICES)); 
getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE); 
getListView().setTextFilterEnabled(true); 

我剛學android上開發。

 public class MainActivity extends Activity { 

     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      final String[] ACTIVITY_CHOICES = new String[] {getString(R.string.menu_new_game),getString(R.string.menu_prefs)}; 

      setContentView(R.layout.activity_main); 
      setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,ACTIVITY_CHOICES)); 
      getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE); 
      getListView().setTextFilterEnabled(true); 
     } 
     OnItemClickListener myOnItemClickListener = new OnItemClickListener() { 
     public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3){ 

      switch(arg2) 
        { 
        case 0: 
        startGame(); 
        break; 
        case 1: 
        startPrefs(); 
        break; 
        default: break; 
       } 
     }getListView().setOnItemClickListener(myOnItemClickListener); 
     };  

     private void startGame() { 
     SharedPreferences settings = getSharedPreferences("memoryPrefs", 0); 
     SharedPreferences.Editor prefeditor = settings.edit(); 
     prefeditor.putBoolean("new_game", true); 
     prefeditor.putInt("score", 100); 
     prefeditor.commit(); 
     Intent launchGame = new Intent(this, PlayGame.class); 
     startActivity(launchGame); 
    } 

    private void startPrefs() { 
      Intent launchPrefs = new Intent(this, SettingScreen.class); 
      startActivity(launchPrefs); 
     } 


    @Override 
    protected void onPause() { 
    super.onPause();   
    SharedPreferences settings = getSharedPreferences("memoryPrefs", 0); 
    SharedPreferences.Editor prefeditor = settings.edit(); 
    prefeditor.putString("previous_screen", "MenuScreen"); 
    prefeditor.commit(); 
     } 

    } 
+1

什麼錯誤? – 2Dee

+0

發佈您的logcat錯誤細節? – Triode

回答

0
  1. 公共類MainActivity擴展ListActivity

  2. 添加列表視圖id作爲機器人:ID = 「@機器人:ID /列表」在activity_main.xml中文件

1

您需要延長ListActivity

setListAdapterLisActivtiy的方法。

更改此

public class MainActivity extends Activity { 

public class MainActivity extends ListActivity { 

而且下面

getListView().setOnItemClickListener(myOnItemClickListener); 

應該onCreate

http://developer.android.com/reference/android/app/ListActivity.html

ListActivity的默認佈局由屏幕中央的單個全屏列表組成。但是,如果您願意,可以通過在onCreate()中使用setContentView()設置您自己的視圖佈局來自定義屏幕布局。要做到這一點,你自己的觀點必須包含id爲一個ListView對象「@android:ID /列表」(或列表,如果它在代碼)

所以如果你需要在你的XML其他意見,你需要有

<ListView android:id="@android:id/list" // in your layout xml 

如果你不希望其他任何視圖中刪除setContentView(R.layout.activity_main)

,或者您需要在XML ListView。初始化列表視圖,並使用

listview.setAdapter(adapter); 

編輯:

public class MainActivity extends ListActivity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     final String[] ACTIVITY_CHOICES = new String[] {getString(R.string.menu_new_game),getString(R.string.menu_prefs)}; 
     setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,ACTIVITY_CHOICES)); 
     getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE); 
     getListView().setTextFilterEnabled(true); 
     getListView().setOnItemClickListener(myOnItemClickListener); 
    } 
    OnItemClickListener myOnItemClickListener = new OnItemClickListener() { 
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3){ 

     switch(arg2) 
       { 
       case 0: 
       startGame(); 
       break; 
       case 1: 
       startPrefs(); 
       break; 
       default: break; 
      } 
    } 
    };  

    private void startGame() { 
    SharedPreferences settings = getSharedPreferences("memoryPrefs", 0); 
    SharedPreferences.Editor prefeditor = settings.edit(); 
    prefeditor.putBoolean("new_game", true); 
    prefeditor.putInt("score", 100); 
    prefeditor.commit(); 
    Intent launchGame = new Intent(this, PlayGame.class); 
    startActivity(launchGame); 
} 

private void startPrefs() { 
     Intent launchPrefs = new Intent(this, SettingScreen.class); 
     startActivity(launchPrefs); 
    } 


@Override 
protected void onPause() { 
super.onPause();   
SharedPreferences settings = getSharedPreferences("memoryPrefs", 0); 
SharedPreferences.Editor prefeditor = settings.edit(); 
prefeditor.putString("previous_screen", "MenuScreen"); 
prefeditor.commit(); 
    } 
} 
0

請改變你的線下方喜歡,看看是否有錯誤,並延伸到ListActivity

super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main); 
    final String[] ACTIVITY_CHOICES = new String[] {getString(R.string.menu_new_game),getString(R.string.menu_prefs)};