Android一个活动到弹出窗口

时间:2011-07-20 06:43:35

标签: android

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

查看我的代码

此初始列表活动:

    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>

完成弹出窗口工作后,我们如何才能进入上一个特定地点的活动?

请帮帮我......

提前致谢

4 个答案:

答案 0 :(得分:2)

从你启动弹出窗口的任何地方调用它,通过调用这个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();
    }
}

答案 1 :(得分:1)

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

答案 2 :(得分:1)

你想让listview专注于一个非默认的位置吗?如果是这样,你只需要有位置的返回意图,而在onActivityForResult()你将焦点设置在该位置。如果你有任何问题,请添加我的雅虎或Skype :fsoft_duonghv和我们讨论。

答案 3 :(得分:1)

您可以创建AlertDialog,而不是为弹出窗口启动新活动。您可以调用dismiss()返回您的活动。