我面临一个问题。我不知道它应该是它的方式还是我错过了什么。
我想通过...更改textview的文本与其他活动
1.扩大其他活动的布局。
2.获取文本视图
3.在textview上调用setText()
我这样做但是当我切换回使用该布局的活动时,文本与之前的相同。
所以我冒昧地在一个新的项目上检查它,只有“hello world”textview关于mainactivity和另一个活动来改变“你好世界”textview的文本。
但我得到了同样的结果。案文没有改变。它甚至没有给我一个例外或任何东西。应用正常运行。我不明白为什么会这样?
代码
MainActivity.java
public class MainActivity extends Activity
{
public static TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView) findViewById(R.id.lolll);
tv.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
startActivity(new Intent(MainActivity.this, MonActivity.class));
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
MonActivity.java - 活动#2
public class MonActivity extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mon);
LayoutInflater inf = getLayoutInflater();
RelativeLayout rel = (RelativeLayout) inf.inflate(R.layout.activity_main, null);
TextView tv = (TextView) rel.findViewById(R.id.lolll);
tv.setText("finger crossed");
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.mon, menu);
return true;
}
}
答案 0 :(得分:1)
您不能(您可以通过静态视图定义执行此操作,但不应该这样做!)直接从另一个活动更改活动的视图值/属性。使用startActivityForResult并传递并获取onActivityResult方法的更改/新值。
我没有在这里分享任何示例或链接。你可以找到很多样本,只需搜索startActivityForResult;)
编辑:如果您在活动中为布局充气,它会创建一个新的视图实例。因此,对膨胀布局的更改仅适用于该实例。
我希望我的评论可以帮助你。