在活动之间更改 TextView
Change TextView Between Activities
所以我得到了一个包含以下活动的项目:MainActivity/GetJson/ TimerActivity.
GetJson activity :
public class GetJson extends AppCompatActivity {
String JSON_STRING;
String json;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void getJSON(View view){
new BackgroundTask().execute();
}
public class BackgroundTask extends AsyncTask<Void,Void,String> {
String json_url;
@Override
protected void onPreExecute() {
json_url="http://10.10.103.36/projet/php/fichier.php";
}
@Override
protected String doInBackground(Void... params) {
try {
URL url=new URL(json_url);
HttpURLConnection httpURLConnection=(HttpURLConnection)url.openConnection();
InputStream inputStream=httpURLConnection.getInputStream();
BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(inputStream));
StringBuilder stringBuilder=new StringBuilder();
while ((JSON_STRING= bufferedReader.readLine())!=null){
stringBuilder.append(JSON_STRING+"\n");
}
bufferedReader.close();
inputStream.close();;
httpURLConnection.disconnect();
return stringBuilder.toString().trim();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onProgressUpdate(Void... values) {
super.onProgressUpdate(values);
}
@Override
protected void onPostExecute(String result) {
json=result;
}
}
}
计时器Activity
public class TimerActivity extends Activity {
private TextView test;
String msg = "Hey";
private Handler mHandler = new Handler();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
test = (TextView) findViewById(R.id.compteur);
Timer timer = new Timer();
TimerTask tt = new TimerTask()
{
@Override
public void run()
{
test.setText(msg);
}
};
timer.scheduleAtFixedRate(tt,5000,1000); // Delay 5 seconds on the first run
// then run every second
test.setText(msg);
setContentView(R.layout.activity_main);
}
}
在我的 xml 主 activity 中,我有 2 个文本视图:
- compteur:显示来自我的计时器的文本activity
- textViewJson:显示我的 json
我认为我获取 json(来自 GetJson)和显示文本(来自 TimerActivity)的方法是正确的。但问题是我无法将其他活动的文本设置到我的主要 activity。
我没有任何编译问题,但我的 textView 没有更新。
我在 GetJson 和 TimerActivity 中都尝试过只做 :
TextView test;
test = (TextView) findViewById(R.id.compteur);
test.setText(msg);
为了检查我是否可以在不使用返回值的情况下更改 textview 文本并且没有任何反应。
有什么想法吗?
祝你有美好的一天!
获得要在电视上显示的信息后,应将其保存在某处并在创建 Activity 时加载。您无法更改已销毁 Activity 中的视图状态。使用 Intents (putExtra();
) 在活动之间传递数据或使用 SharedPreferences
所以我得到了一个包含以下活动的项目:MainActivity/GetJson/ TimerActivity.
GetJson activity :
public class GetJson extends AppCompatActivity {
String JSON_STRING;
String json;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void getJSON(View view){
new BackgroundTask().execute();
}
public class BackgroundTask extends AsyncTask<Void,Void,String> {
String json_url;
@Override
protected void onPreExecute() {
json_url="http://10.10.103.36/projet/php/fichier.php";
}
@Override
protected String doInBackground(Void... params) {
try {
URL url=new URL(json_url);
HttpURLConnection httpURLConnection=(HttpURLConnection)url.openConnection();
InputStream inputStream=httpURLConnection.getInputStream();
BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(inputStream));
StringBuilder stringBuilder=new StringBuilder();
while ((JSON_STRING= bufferedReader.readLine())!=null){
stringBuilder.append(JSON_STRING+"\n");
}
bufferedReader.close();
inputStream.close();;
httpURLConnection.disconnect();
return stringBuilder.toString().trim();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onProgressUpdate(Void... values) {
super.onProgressUpdate(values);
}
@Override
protected void onPostExecute(String result) {
json=result;
}
}
}
计时器Activity
public class TimerActivity extends Activity {
private TextView test;
String msg = "Hey";
private Handler mHandler = new Handler();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
test = (TextView) findViewById(R.id.compteur);
Timer timer = new Timer();
TimerTask tt = new TimerTask()
{
@Override
public void run()
{
test.setText(msg);
}
};
timer.scheduleAtFixedRate(tt,5000,1000); // Delay 5 seconds on the first run
// then run every second
test.setText(msg);
setContentView(R.layout.activity_main);
}
}
在我的 xml 主 activity 中,我有 2 个文本视图: - compteur:显示来自我的计时器的文本activity - textViewJson:显示我的 json
我认为我获取 json(来自 GetJson)和显示文本(来自 TimerActivity)的方法是正确的。但问题是我无法将其他活动的文本设置到我的主要 activity。 我没有任何编译问题,但我的 textView 没有更新。 我在 GetJson 和 TimerActivity 中都尝试过只做 :
TextView test;
test = (TextView) findViewById(R.id.compteur);
test.setText(msg);
为了检查我是否可以在不使用返回值的情况下更改 textview 文本并且没有任何反应。
有什么想法吗?
祝你有美好的一天!
获得要在电视上显示的信息后,应将其保存在某处并在创建 Activity 时加载。您无法更改已销毁 Activity 中的视图状态。使用 Intents (putExtra();
) 在活动之间传递数据或使用 SharedPreferences