代码之家  ›  专栏  ›  技术社区  ›  Namratha

ListActivity有问题

  •  1
  • Namratha  · 技术社区  · 16 年前

    下面是我用于设置Activity.java的代码。主活动通过调用OnScreensettings(this)来启动此活动。

    public class SettingsActivity extends ListActivity{
    
    static String[] main_settings = {"mode",
                                "timeout"
    };
    static String[] mode = { "Audio",
                      "Video",
                      "Audio/Video"
    };
    static String[] timeout = {
                            "1 min",
                            "5 min",
                            "10 min"
    };
    static String result;
    static String[] display;
    
    boolean settings_selected = false;
    static String TAG = "****ALIST****";
    
    
    public static void onScreenSettings(Activity c){
    
        display = main_settings;
        Log.d(TAG,"inside onScreenSettings");
        Intent intent = new Intent(c.getApplication(),SettingsActivity.class);
        try{
            c.startActivityForResult(intent,1);
            Log.d(TAG,"after starting activity in onScreenSettings");
        }catch(Exception e){
    
        }
    }
    
    
    
    
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
    
        super.onCreate(savedInstanceState);
        Log.d(TAG,"inside onCreate-before setting listview");
        setListAdapter(new ArrayAdapter<String>(this,
                   android.R.layout.simple_list_item_1, display));
            getListView().setTextFilterEnabled(true);
            Log.d(TAG,"inside oncreate-after setting listview");
    
    }
    public void onListItemClick(ListView l, View v, int position, long id){
         result = (String) l.getItemAtPosition(position);
         if(!settings_selected){
             if(result.equals("mode")){
            display = mode;         
             }
             else if(result.equals("timeout")){
            display = timeout;              
             }
             settings_selected = true;
             Log.d(TAG,"if !setting_selected");
    
         }
         else{/*accepting the sub options*/
             display = main_settings;//next the main settings must be displayed
             if(result.equals("Audio")){
    
             }
             else if(result.equals("Video")){
                 Log.d(AndroidRecorder.TAG,"inside sub option Video");
             }
             else if(result.equals("Audio/Video")){
    
             }
             settings_selected = false;
             Log.d(TAG,"if setting_selected");
         }
         Intent intent = new Intent(this.getApplication(),SettingsActivity.class);
         try{
            startActivityForResult(intent,1);
            Log.d(TAG,"after starting activity in ListItemClick");
        }
        catch(Exception e){
    
        }
    
    }
    public void onActivityResult(int requestCode, int resultCode,Intent data) {
        //nothing to do with the intent here
        Log.d(TAG,"inside onActivityResult");
        setResult(RESULT_OK, data);
        finish();
        Log.d(TAG,"inside onActivityResult-after finish()");
    }
    /*public void onBackPressed(){
        Log.d(TAG,"inside onBackPressed");
        finish();
        Log.d(TAG,"inside onBackPressed-after finish()");
    
    }*/
    
    }//end of ListActivity
    

    问题是控件未进入 else /*accepting the sub options*/ 我不明白为什么。因此,模式或超时列表会被一次又一次地显示,并且不会显示主设置。 请帮忙。

    1 回复  |  直到 16 年前
        1
  •  0
  •   Jere.Jones    16 年前

    当您在OnListitemClick中调用StartActivityForResult时,您会得到一个全新的SettingsActivity实例。logcat在显示“if”之后是否显示“inside oncreate”!设置“已选择”?

    如果确实如此,而且您不想进行重大的重构,那么您可以将所选设置的值填充到一个额外的意图中,然后在创建时将其拉出。