android edittext无法获取数据

时间:2015-02-04 09:06:45

标签: android

在我的Android程序中,我使用 achartengine 库来显示饼图。

程序的基础是我有一个活动,我有2个编辑文本字段和一个按钮。填写编辑文本字段后,点击按钮它会显示一个带有饼图的弹出窗口..

这里,我使用 NAME_LIST 作为字符串类型数组。编辑文本的值将存储在我们可以获取的位置之后 代码如下:---

   public class AndroidPopupWindowActivity111_new extends Activity {

    private static int[] COLORS = new int[] { Color.MAGENTA, Color.CYAN };  
    LinearLayout layout;

    private CategorySeries mSeries = new CategorySeries("");  
    private DefaultRenderer mRenderer = new DefaultRenderer();  
    private GraphicalView mChartView;  


     EditText name1,name2;



    private  int[] VALUES = { 40,60 };
     String x1,y1;

     String[] NAME_LIST ; 

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.popup_main);
        name1=(EditText) findViewById(R.id.ext1);
       name2=(EditText) findViewById(R.id.ext2);
       x1=name1.getText().toString();
       y1=name2.getText().toString();
       NAME_LIST = new String[] { x1 , y1 };

        mRenderer.setApplyBackgroundColor(true);
        mRenderer.setBackgroundColor(Color.argb(100, 50, 50, 50));  
        mRenderer.setChartTitleTextSize(20);  
        mRenderer.setLabelsTextSize(15);  
        mRenderer.setLegendTextSize(15);  
        mRenderer.setMargins(new int[] { 20, 30, 15, 0 });  
        mRenderer.setZoomButtonsVisible(true);  
        mRenderer.setStartAngle(90);

        final Button btnOpenPopup = (Button)findViewById(R.id.openpopup);

        mChartView = ChartFactory.getPieChartView(this, mSeries, mRenderer); 


        btnOpenPopup.setOnClickListener(new Button.OnClickListener(){

   @Override
   public void onClick(View arg0) {
   LayoutInflater layoutInflater    = (LayoutInflater)getBaseContext()  .getSystemService(LAYOUT_INFLATER_SERVICE);  


       View popupView = layoutInflater.inflate(R.layout.main_piechart, null);  
             final PopupWindow popupWindow = new PopupWindow( popupView, LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);  
             layout = (LinearLayout)popupView.findViewById(R.id.chart); 
             layout.addView(mChartView);

             for (int i = 0; i < VALUES.length; i++) {  


                    mSeries.add(NAME_LIST[i] + "(" + VALUES[i]+"%)", VALUES[i]);
                    SimpleSeriesRenderer renderer = new SimpleSeriesRenderer();  
                 renderer.setColor(COLORS[(mSeries.getItemCount() - 1) % COLORS.length]);  
                 mRenderer.addSeriesRenderer(renderer);  
                 }  

                 if (mChartView != null) {  

                    mChartView.repaint();  

                 }  


             Button btnDismiss = (Button)popupView.findViewById(R.id.dismiss);
             btnDismiss.setOnClickListener(new Button.OnClickListener(){

     @Override
     public void onClick(View v) {

      popupWindow.dismiss();
     }});

             popupWindow.showAsDropDown(btnOpenPopup, 50, -30);

   }});
    }

}

但问题是名称不是从edittext获取的。我给出了一个例子发生了什么错误。: -

Click the picture to know the problem ...在此图片中 A,B,C,D 是我的输出中的编辑文字值.. A,B,C,D 显示为&#34; null&#34; 问题在哪里???????????提前感谢

1 个答案:

答案 0 :(得分:1)

初始化时

String[] NAME_LIST = new String[] { x1,y1 };

x1和y1为空。稍后更改x1和y1的值不会更改NAME_LIST中的值。

添加行

NAME_LIST = new String[] { x1,y1 };

就在OnCreate()中的for循环之前。它会起作用。

编辑:

移动这五行

       name1=(EditText) findViewById(R.id.ext1);
       name2=(EditText) findViewById(R.id.ext2);
       x1=name1.getText().toString();
       y1=name2.getText().toString();
       NAME_LIST = new String[] { x1 , y1 };

进入onClick()方法,就在for循环开始之前。