2011-07-20 54 views
1

我的要求是:列出所有销售路线&突出显示默认值,应该是第一个选项。如果销售员选择其他选项(未选择默认值),则弹出窗口应该出现。弹出窗口包含一个表单,它与DB交谈。提交弹出窗口表单后,它返回前一个屏幕,它需要允许转到其他位置。Android一个活动弹出窗口

见我的代码

这个初始列表活动:

ArrayList<Object> routeList = getWmRoute(); 
    ArrayList<String> routhPath = new ArrayList<String>(); 
    for(int i = 0; i<routeList.size();i++){ 
     routhPath.add(((WMRoute) routeList.get(i)).getDescription()); 
    } 

    ArrayAdapter ad = new ArrayAdapter(this,android.R.layout.simple_list_item_single_choice,routhPath); 
    setListAdapter(ad); 
    final ListView list=getListView(); 
    list.setChoiceMode(ListView.CHOICE_MODE_SINGLE); 
    list.setItemsCanFocus(true); 
    list.setTextFilterEnabled(true); 
    list.setItemChecked(0,true); 
    list.setSelection(0); 

这是监听方法

@Override 
protected void onListItemClick(ListView l, View v, int position, long id) { 
    super.onListItemClick(l, v, position, id); 
    if(position !=0){ 
     Bundle bundle = new Bundle(); 
     int postion = position; 
     String aString = Integer.toString(postion); 
     bundle.putString("positon", aString); 
     Intent showContent = new Intent(getApplicationContext(),SalesRouteDevitionActivity.class); 
     // startActivityForResult(showContent,0); 
     startActivity(showContent); 

    } 
} 

这是我SalesRouteDevitionActivity类

array_spinner=new String[2]; 
    array_spinner[0]="Rain"; 
    array_spinner[1]="Floods"; 
    Bundle bundle = this.getIntent().getExtras(); 
    param1 = bundle.getString("param1"); 

    Spinner s = (Spinner) findViewById(R.id.spinner1); 
    ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_spinner_dropdown_item, array_spinner); 
    s.setAdapter(adapter); 
    final Button button = (Button) findViewById(R.id.submit); 

    button.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 
      Toast.makeText(SalesRouteDevitionActivity.this, "Beep Bop", Toast.LENGTH_SHORT).show(); 
      Intent showContent = new Intent(getApplicationContext(),SalesRouteActivity.class); 

      Bundle bundle = new Bundle(); 
      bundle.putString("position", param1); 
      Intent mIntent = new Intent(); 
      mIntent.putExtras(bundle); 
      setResult(RESULT_OK, mIntent); 
      finish(); 
      startActivity(showContent); 


     } 
    }); 

这是我的清单文件

<activity android:theme="@android:style/Theme.Dialog" android:name=".SalesRouteDevitionActivity" 
       android:label="Sales Route Diviation"> 
    </activity> 

完成弹出窗口的工作后,我们如何去以前的活动,特别的地方?

请帮我...

在此先感谢

回答

2

无论你启动弹出窗口使用意图throught称之为startActivityForResult调用它(your_intent,requestCode)

它将启动活动,并在弹出的活动不喜欢这种方式

Bundle bundle = new Bundle(); 
bundle.putString("position", param1); 

Intent mIntent = new Intent(); 
mIntent.putExtras(bundle); 
setResult(RESULT_OK, mIntent); 
finish(); 

所以弹出窗口将完成他的活动,并返回到之前的活动,它将调用结果

并在您的活动中像这样覆盖onActivityResult

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if(resultCode==1){ 
     if(resultCode==RESULT_OK) 
      Toast.makeText(this, "SUCCESS", Toast.LENGTH_LONG).show(); 
     else 
      Toast.makeText(this, "Fail", Toast.LENGTH_LONG).show(); 
    } 
} 
+0

感谢您的支持。它的工作正常 – Piraba

1

您可以创建所选项目的位置的全局变量。然后,当您返回到上一个活动时,请致电listView1.smoothScrollToPosition(int position)

1

你想要的ListView注重这不是默认?如果是这样,你只需要与位置和onActivityForResult()将焦点设置在该position.If您有任何问题,返回意图的位置,请加我雅虎或Skype:fsoft_duonghv和我们讨论。

1

您可以创建AlertDialog而不是为弹出式窗口开始新的活动。你可以调用dismiss()来返回你的活动。