0

//这是显示列表的主要活动

 public class MainActivity extends ListActivity
{
        protected void onCreate(Bundle savedInstanceState) 
        {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
                    final ListView listView=(ListView) findViewById(R.id.times_list);
                timeTrackerAdapter=new TimeTrackerAdapter();
                listView.setAdapter(timeTrackerAdapter);
                listView.setOnItemClickListener(new OnItemClickListener() {

                @Override
                public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                    long arg3) {
                //how to show a popup or dialog box 
                    //my popup layout file is popup_layout_file.xml

                }
            });

         }
  }
4

6 回答 6

1

One simple example would be:

@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
    AlertDialog.Builder builder = new AlertDialog.Builder(YourActivity.this);

    builder.setTitle("Dialog message here");
    builder.setMessage("Dialog message here");

    builder.create().show();
}

Read up more on dialogs here.

于 2013-05-17T14:10:11.810 回答
1

您提到您有自己的对话框/弹出窗口的 xml 布局,这是另一种解决方案,与 Jarvis 的解决方案略有不同。

public class SomeDialog extends DialogFragment {

    public interface SomeDialogListener {

       void onSomethingChanged(some argument);

    }

    private static final String DIALOG_ARGUMENT_SOMEARGUMENT= "someTag";

    private SomeDialogListener mListener;

    public static SomeDialog newInstance(...params) {
        SomeDialog someDialog= new SomeDialog();
        Bundle args= new Bundle();
        args.putInt(DIALOG_ARGUMENT_DURATION, minutes);
        someDialog.setArguments(args);

        return someDialog;
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        Bundle arguments= getArguments();
        int duration= arguments.getInt(DIALOG_ARGUMENT_SOMEARGUMENT, DEFAULT_VALUE);

        View view= inflater.inflate(R.layout.template_edit_duration_dialog, container);

        getDialog().setTitle(R.string.YourTitle);
        setupOKButton(view);
        setupCancelButton(view);

        return view;
    }

    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        try {
            mListener= (SomeDialogListener) activity;
        } catch (ClassCastException e) {
            throw new IllegalStateException(activity.toString() + " must implement SomeDialogListener");
        }
    }

    private void setupOKButton(View view) {
        final View okButton= view.findViewById(R.id.okButton); // From layout
        okButton.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                // Do something, dismiss dialog ( e.g. getDialog().dismiss(); or call listener mListener.onSomethingChanged(argument) )
            }
        });
    }

    private void setupCancelButton(View view) {
        final View cancelButton= view.findViewById(R.id.cancelButton);
        cancelButton.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                // Do something, dismiss dialog (e.g. getDialog().dismiss();)
            }
        });
    }

现在可以使用 SomeDialog.newInstance(params).show(FragmentManager, DialogTag (optional)) 实例化对话框。使用 Dialog 的类还应该实现您创建的 dialogListener。

如果您只需要一个对话框来通知用户某些事情,您可以使用 AlertDialog 或只使用 Jarvis 建议的对话框。

于 2013-05-17T14:45:20.940 回答
0

如果您想在自己的 xml 布局中使用自定义弹出窗口,我建议您使用 Dialog 并像这样使用 setContentView():

Dialog dialog = new Dialog(PopupActivity.this);
dialog.setContentView(R.layout.my_popup);
dialog.setTitle("My first customize popup");

TextView textView = (TextView)dialog.findViewById(R.id.textViewPopup);
textView.setText("bonjour!\My first customize popup!!");

dialog.show();

布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    android:padding="10dp" >

    <ImageView
        android:id="@+id/imageViewPopup"
        android:layout_width="100dp"
        android:layout_height="fill_parent"
        android:src="@drawable/ic_amstrong" />

    <TextView
        android:id="@+id/textViewPopup"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:gravity="center_vertical"
        android:padding="10dp"
        android:text="my first customize popup" />

</LinearLayout>
于 2013-05-17T14:15:16.797 回答
0
AlertDialog.Builder builder = new Builder(MainActivity.this);
    String message = "Selected " + arg2+ " item";
    builder.setMessage(message);
    builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int which) {
            //Click cancel button
        }
    });
    builder.setPositiveButton("Okay", new DialogInterface.OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int which) {
            //Click ok button
        }
    });
    builder.create().show();
于 2013-05-17T14:16:07.360 回答
0
AlertDialog.builder dialog = new AlertDialog.Builder(YourActivity.this);

  builder.setTitle("Title");
  builder.setMessage("message to show");
  builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int id) {
            // TODO Auto-generated method stub
                dialog.cancel();
        }
    });
    builder.create().show();
于 2013-05-17T14:16:32.637 回答
0

活动也可以显示为弹出/警报对话框。只需使用您的弹出布局文件创建一个活动并在requestWindowFeature(Window.FEATURE_NO_TITLE)之前添加setContentView.

添加android:theme="@android:style/Theme.Dialog"到清单中的弹出活动。

像往常一样从你的 onItemClickListener 调用意图

Intent intent = new Intent(CurrentActivity.this, PopupActivity.class);
startActivity(intent);

希望能帮助到你。

于 2013-05-17T14:17:08.193 回答