Android Studio:第二个 Activity 中的 TextView 未更新
Android Studio: TextView in Second Activity not Updating
我试图在用户点击按钮的 运行 时间更改 TextView
的文本。我从 Fragment 中的私有方法调用 setText()
,它应该更新我创建的 Activity
使用的 XML 中的 TextView
。片段是导航抽屉 Activity 预设生成的片段之一,以防有帮助。
这是 Fragment 中的方法:
private void openGameActivity(List<Game> currentYearCategory, int gameNum){
LayoutInflater layoutInflater = LayoutInflater.from(getActivity());
View view = layoutInflater.inflate(R.layout.activity_game, null, false);
TextView textView = view.findViewById(R.id.refereeAndDate);
String string = "test string";
textView.setText(string);
Intent intent = new Intent(getActivity(), GameActivity.class);
startActivity(intent);
}
activity正确打开,没有错误。 findViewById
能够找到 TextView
并且调用 setText()
必须更改文本,因为我已经尝试在 TextView
上调用 getText()
并且它 returns更新后的值。问题是,当我 运行 应用程序时, TextView
文本不会在视觉上更新。这是 activity 代码,以防有用:
public class GameActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_game);
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setSubtitle(R.string.page_game_details);
}
}
public boolean onOptionsItemSelected(MenuItem item){
finish();
return true;
}
}
来自 activity_game
布局的 TextView
XML 代码:
<TextView
android:id="@+id/refereeAndDate"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="The match was refereed by Brown on 16/04/12." />
我确定这个 TextView
的 ID 不是重复的。如何让它更新?
尝试使用 Intent
将 String
从 Fragment
传递到 Activity
,如下所示:
private void openGameActivity(List<Game> currentYearCategory, int gameNum){
....
String string = "test string";
textView.setText(string);
Intent intent = new Intent(getActivity(), GameActivity.class);
intent.putExtra("SHARED_CONTENT", string);
startActivity(intent);
}
然后在您的 GameActivity
中进行如下更改:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
....
TextView refereeAndDate = findViewById(R.id.refereeAndDate);
String string = getIntent().getStringExtra("SHARED_CONTENT");
refereeAndDate.setText(string);
}
我试图在用户点击按钮的 运行 时间更改 TextView
的文本。我从 Fragment 中的私有方法调用 setText()
,它应该更新我创建的 Activity
使用的 XML 中的 TextView
。片段是导航抽屉 Activity 预设生成的片段之一,以防有帮助。
这是 Fragment 中的方法:
private void openGameActivity(List<Game> currentYearCategory, int gameNum){
LayoutInflater layoutInflater = LayoutInflater.from(getActivity());
View view = layoutInflater.inflate(R.layout.activity_game, null, false);
TextView textView = view.findViewById(R.id.refereeAndDate);
String string = "test string";
textView.setText(string);
Intent intent = new Intent(getActivity(), GameActivity.class);
startActivity(intent);
}
activity正确打开,没有错误。 findViewById
能够找到 TextView
并且调用 setText()
必须更改文本,因为我已经尝试在 TextView
上调用 getText()
并且它 returns更新后的值。问题是,当我 运行 应用程序时, TextView
文本不会在视觉上更新。这是 activity 代码,以防有用:
public class GameActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_game);
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setSubtitle(R.string.page_game_details);
}
}
public boolean onOptionsItemSelected(MenuItem item){
finish();
return true;
}
}
来自 activity_game
布局的 TextView
XML 代码:
<TextView
android:id="@+id/refereeAndDate"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="The match was refereed by Brown on 16/04/12." />
我确定这个 TextView
的 ID 不是重复的。如何让它更新?
尝试使用 Intent
将 String
从 Fragment
传递到 Activity
,如下所示:
private void openGameActivity(List<Game> currentYearCategory, int gameNum){
....
String string = "test string";
textView.setText(string);
Intent intent = new Intent(getActivity(), GameActivity.class);
intent.putExtra("SHARED_CONTENT", string);
startActivity(intent);
}
然后在您的 GameActivity
中进行如下更改:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
....
TextView refereeAndDate = findViewById(R.id.refereeAndDate);
String string = getIntent().getStringExtra("SHARED_CONTENT");
refereeAndDate.setText(string);
}