从MPAndrioid RadarChart调用AlertDialog

时间:2016-07-11 08:43:32

标签: android android-alertdialog mpandroidchart

我能够使RadarChart使用一些静态数据。现在,当用户点击雷达图表要求用户输入一些数据然后使用此输入数据重绘图表时,我想显示一个警告对话框。

我创建了一个扩展MarkerView的MyMarkerView类,并在refreshContent方法中添加了Alert Dialog视图的代码。

但问题是无论何时使用单击AlerDialog,都会再次调用refreshContent并创建一个新的警报Dialog - 并且用户无法输入任何内容。 下面是refreshContent方法中的代码

       LayoutInflater li = LayoutInflater.from(mContext);
            View promptsView = li.inflate(R.layout.month_target_analysis_dialog, null);

            AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(mContext);

            // set prompts.xml to alertdialog builder
            alertDialogBuilder.setView(promptsView);

            final EditText userInput1 = (EditText) promptsView.findViewById(R.id.textView1Edit);
            final EditText userInput2 = (EditText) promptsView.findViewById(R.id.textView2Edit);

            // set dialog message
            alertDialogBuilder.setCancelable(false);
            alertDialogBuilder.setPositiveButton("OK",
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) {
                            // get user input and set it to result
                            // edit text
                            //result.setText(userInput.getText());
                            String input1 = userInput1.getText().toString();
                            String input2 = userInput1.getText().toString();
                            if (userInput1.getError() == null && userInput2.getError() == null) {
                                //Do something
                            } else {
                            }
                        }
                    });
            alertDialogBuilder.setNegativeButton("Cancel",
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) {
                            dialog.cancel();
                        }
                    });

            // create alert dialog
            AlertDialog alertDialog = alertDialogBuilder.create();

            // show it
            alertDialog.show();
        }

以下是Xml布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/layout_root"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:padding="10dp" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >
        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingRight="10dp"
            android:text="@string/l_target"
            android:textAppearance="@style/ItemMedium" />

        <EditText
            android:id="@+id/textView1Edit"
            android:layout_width="50dp"
            android:layout_height="wrap_content"
            android:paddingLeft="50dp"
            android:clickable="false"
            android:inputType="number"
            >
            <requestFocus />
        </EditText>
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >
        <TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingRight="10dp"
            android:text="@string/g_target"
            android:textAppearance="@style/ItemMedium" />

        <EditText
            android:id="@+id/textView2Edit"
            android:layout_width="50dp"
            android:layout_height="wrap_content"
            android:paddingLeft="50dp"
            android:clickable="false"
            android:inputType="number"
            >
        </EditText>
    </LinearLayout>

如何禁用refreshContent的调用? 或者还有其他更好的处理方法吗?

由于 普利文

1 个答案:

答案 0 :(得分:0)

我无法使用MarkerView使其工作。相反,我定义了一个setOnChartGestureListener来捕获图表上的所有可能操作,然后在捕获操作时处理必要的操作。 似乎在起作用。

 mChart.setOnChartGestureListener(new OnChartGestureListener() {
       @Override
            public void onChartSingleTapped(MotionEvent me) {
                // TODO Auto-generated method stub
                Log.e(LOG_TAG, "single tap");

            }
          @Override
            public void onChartDoubleTapped(MotionEvent me) {
                // TODO Auto-generated method stub
                Log.e(LOG_TAG, "double tap");
            }
}

由于