2016-12-15 77 views
-1

我在使用Butterknife和从EditTexts获取文本时遇到了一些问题。我有一个活动与许多EditTexts。为了简洁起见,我的代码示例中只包含2-3个。我最终将输入的文本与iText的库一起使用,以便吐出PDF。butterknife编辑文本和“无法解析符号”字符串

首先,我结合的观点与Butterknife:

public class NewPatientActivity extends AppCompatActivity { 


@BindView(R.id.new_patient_editText_last_name) 
TextInputEditText lastNameTextInputEditText; 

@BindView(R.id.new_patient_editText_nick_name) 
TextInputEditText nickNameTextInputEditText; 

@BindView(R.id.new_patient_editText_date_of_birth) 
TextInputEditText dateOfBirthTextInputEditText; 

然后我ButterKnife.bind(this);onCreate()

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_new_patient); 
    ButterKnife.bind(this); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 
} 

然后,点击我的浮动操作按钮应该抓住这是在EditTexts输入的文本的文本:当我使用它们作为参数

@OnClick(R.id.floating_action_button) 
public void finishedPatientNotesFabClick(View view) { 

    try { 


     String lastNameText = lastNameTextInputEditText.getText().toString(); 

     String nickNameText = nickNameTextInputEditText.getText().toString(); 

     String dateOfBirth = dateOfBirthTextInputEditText.getText().toString(); 

    } 

然后我尝试使用这些字符串构造一个新的段落:

private static void addBioAndContactInfoChapter(Document document) throws DocumentException { 


    bioAndContactInfoChapter.add(new Paragraph(R.string.patient_last_name) + ": " + 
      lastNameText); 

    bioAndContactInfoChapter.add(new Paragraph(R.string.patient_nickname) + ": " + 
      nickNameText); 

    bioAndContactInfoChapter.add(new Paragraph(R.string.patient_date_of_birth) + ": " + 
      dateOfBirth); 

但这里是哪里出了问题。当我使用这些字符串时,我得到

无法解析符号'__string name'。

段落类有一个构造函数,它只接受一个字符串,所以我不认为这是问题。由于Butterknife发生了什么样的事情吗?任何帮助将不胜感激!!!

enter image description here

回答

2

从sniplets,你String lastNameTextnickNameTextdateOfBirth似乎是您的本地方法finishedPatientNotesFabClick。很可能这就是为什么他们不能在addBioAndContactInfoChapter方法中访问。在方法外声明这些变量,并在OnClickListener内为它们赋值。

+0

仍然无法正常工作。我声明了“private String lastNameText;”紧接在onCreate()之前的初始Butterknife绑定之后。然后在onClickListener中,我做了“lastNameText = lastNameTextInputEditText.getText()。toString();”但是当我尝试使用“lastNameText”字符串时,[现在我得到“非静态字段不能从静态上下文中引用”](http://imgur.com/a/kQiGD) – langsmith

+0

正确。你的方法是静态的。所以你的变量也需要是静态的,如果你想在该方法中访问它。声明该变量为静态。或者,如果您不需要该方法是静态的,请从方法中删除该方法。 http://stackoverflow.com/questions/413898/what-does-the-static-keyword-do-in-a-class可能有助于更多地了解静态关键字。 –