【问题标题】:setText() not working from another Activity's onClickListenersetText() 在另一个 Activity 的 onClickListener 中不起作用
【发布时间】:2017-03-31 20:42:11
【问题描述】:

我不知道为什么我的代码不起作用:

第一个活动

public static TextView name_contact;
public static TextView message_contact;
public static TextView count_contact;
public static TextView timestamp_contact;



@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.researchpurpose);

    final ListView listView = (ListView) findViewById(R.id.listViewConvlist);
    chatRoomsAdapter = new ChatRoomsAdapter(getApplicationContext(), R.layout.chat_rooms_list_row);
    listView.setAdapter(chatRoomsAdapter);

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        public void onItemClick(AdapterView<?> arg0, View v, int position, long arg3)
        {
            message_contact = (TextView) v.findViewById(R.id.message);
        }
    });
}

第二次活动

@Override
protected void onCreate(final Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.second_acitivy);

    ImageButton buttonSend = (ImageButton) findViewById(R.id.imageButton);
    buttonSend.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View arg0) {
            FirstActivity.message_contact.setText("IL N'Y A QUE TOI");
        }
    });
}

因为如果我把下面的代码放在Second Activity中,它可以工作!

 @Override
protected void onCreate(final Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.second_acitivy);

    FirstActivity.message_contact.setText("IL N'Y A QUE TOI");

}

并且在检查日志时,我没有收到任何错误...

【问题讨论】:

  • 您只找到了视图,没有找到设置文本。 message_contact = (TextView) v.findViewById(R.id.message);
  • listView.setAdapter(...) 在哪里???
  • 我没有在这篇文章中包含它,但这是我的完整代码:(文章的编辑版本)我正在第二个活动中设置文本
  • 在回调中引用必须是最终的
  • 我无法将其设置为final,因为我需要根据项目对其进行修改

标签: java android android-layout android-studio textview


【解决方案1】:

我想通了!事实证明,虚拟键盘在显示时停止了订单(当我说订单时,我的意思是FirstActivity.message_contact.setText("IL N'Y A QUE TOI");)。

所以我在使用这段代码发送订单之前关闭/隐藏虚拟键盘:

View view = this.getCurrentFocus();
if (view != null) {  
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}

在此之后,文本被正确设置。

但我不得不说我不明白为什么显示键盘时代码不起作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-04
    • 2017-10-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多