2017-07-17 96 views
1

我不知道我在做什么错误,但是当我从编辑文本(使用getText().toString())中打印文本时,在logcat中它始终是一个空字符串。我想知道它是否与继续按钮的onClick功能内部完成。我将整个onCreate函数放入函数中,因为onClick函数中的代码似乎完全匹配无数教程显示的内容。无法从编辑文本小部件中获取文本(android)

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 

    Button add_test = new Button(this); 
    Button delete_test = new Button(this); 
    Button[] barray  = new Button[100]; 
    int  trans_grey = Color.parseColor("#40000000"); 
    final String[] test_types = new String[] {"Choose...","Terms", "Multiple choice", "Custom"}; 
    final ArrayAdapter<String> type_adapter = new ArrayAdapter<String>(this,R.layout.spinner_item,test_types); 

    // Preliminary operations and display opening layouts 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
    WindowManager.LayoutParams.FLAG_FULLSCREEN); 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_test); 
    LinearLayout scroll_layout = (LinearLayout)findViewById(R.id.scroll_layout); 
    LayoutParams scroll_params = new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 
                  LayoutParams.WRAP_CONTENT); 


    // Add the add a dynamic button 
    for (int index = 0; index <= 4; index++) 
    { 
     barray[index] = new Button(this); 
     barray[index].setBackgroundColor(trans_grey); 
     barray[index].setText("Array buttons"); 
     barray[index].setTextColor(Color.parseColor("#CCffffff")); 
     scroll_layout.addView(barray[index], scroll_params); 
    } 


    add_test.setTextColor(Color.parseColor("#CCffffff")); 
    add_test.setBackgroundColor(trans_grey); 
    add_test.setText("Add a Test"); 
    scroll_layout.addView(add_test, scroll_params); 
    add_test.setOnClickListener(new View.OnClickListener() 
    {@Override 
     public void onClick(View v) 
     { 

     AlertDialog.Builder add_test_builder = new AlertDialog.Builder(TestActivity.this); 
     final View add_test_view = getLayoutInflater().inflate(R.layout.add_test_menu, null); 
     Spinner type_spinner = (Spinner) add_test_view.findViewById(R.id.type); 
     add_test_builder.setView(add_test_view); 
     final Button continue_button = (Button) add_test_view.findViewById(R.id.continue_button); 
     AlertDialog dialog = add_test_builder.create(); 
     dialog.show(); 
     dialog.getWindow().setLayout(950,900); 

     type_spinner.setAdapter(type_adapter); 
     continue_button.setOnClickListener(new View.OnClickListener() 
     { 
      @Override 
      public void onClick(View v) 
      { 
       View add_test_view = getLayoutInflater(). 
         inflate(R.layout.add_test_menu, null); 
         // The view of the test attribute dialog 
       EditText test_title  = (EditText) add_test_view. 
             findViewById(R.id.testTitle); 
         // Test title widget to hold title of test 
       String user_title  = test_title.getText().toString(); 
       Log.i(TAG, "onClick: " + user_title); 

      } 
     }); 
     return; 
     } 
    }); 

    // Add the delete a test button 
    delete_test.setTextColor(Color.parseColor("#CCffffff")); 
    delete_test.setBackgroundColor(trans_grey); 
    delete_test.setText("Delete a Test"); 
    scroll_layout.addView(delete_test, scroll_params); 


    return; 
    } 

} 

布局:

<EditText 
android:id="@+id/testTitle" 
android:maxLines="1" 
android:lines="1" 
android:inputType="textAutoCorrect" 
android:layout_width="match_parent" 
android:layout_height="35dp" 
android:background="#00000000" 
android:hint="Test Title"/> 
+2

你的EditText是空的再次 –

+0

你为什么要夸大add_test_menu XML继续按钮..可能这是什么导致..用它上面声明的问题的一个方法的onclick里面。 –

回答

0

不要夸大视图yiu多次分配给对话框,因为你正在创建它的多个实例,你正在写一个视图,但试图从另一个视图获取数据....尝试像这样做.. 。

AlertDialog.Builder add_test_builder = new AlertDialog.Builder(TestActivity.this);

final View add_test_view = getLayoutInflater().inflate(R.layout.add_test_menu, null); 

final EditText test_title = (EditText) add_test_view. findViewById(R.id.testTitle); 

continue_button.setOnClickListener(new View.OnClickListener() { 

@Override public void onClick(View v) { 
    String user_title = test_title.getText().toString(); 
Log.i(TAG, "onClick: " + user_title); } }); 
+0

对不起,乱了格式..编辑从应用程序 –

+0

非常感谢你!有效 –

0

IMO你可以叫EDITTEXT串Click方法之外像上面

final EditText test_title; 

    continue_button.setOnClickListener(new View.OnClickListener() 
    { 
     @Override 
     public void onClick(View v) 
     { 
      View add_test_view = getLayoutInflater(). 
        inflate(R.layout.add_test_menu, null); 
        // The view of the test attribute dialog 
      EditText test_title  = (EditText) add_test_view. 
            findViewById(R.id.testTitle); 
        // Test title widget to hold title of test 



     } 
    }); 

    String user_title  = test_title.getText().toString(); 
     Log.i(TAG, "onClick: " + user_title); 
0

我想你以前和你的点击数的方法之外应该定义的EditText。或者在你的onlick方法后得到字符串。

相关问题