我在android中启动新活动时遇到问题。我在这里看了很多其他问题,但我没有找到答案。这就是问题所在: 四课: 1. WelcomeActivity; 2.主要活动; 3. PopUpActivity; 4.客户;
在开始启动WelcomeActivity时,您键入所有需要的凭据以连接到服务器,单击该按钮后,字符串将发送到服务器。如果一切正常,服务器发送验证字符串。如果收到OK,则启动MainActivity。用户在MainActivity中键入不同的内容,按下另一个按钮,该按钮将另一个字符串发送到服务器。服务器处理它(字符串)并发回一个响应,也是一个字符串。这就是问题所在。当服务器将最后一个字符串发送到客户端时,我想启动PopUpActivity,这将在TextView中显示这个aprticualr字符串。
我的代码: 客户部分(如果是其他的话):
public void run() throws Exception {
Socket client = new Socket(ip, port);
in = new BufferedReader(new InputStreamReader(client.getInputStream()));
out = new PrintWriter(client.getOutputStream(), true);
out.println(welcomeActivity.getCredentials());
while (true) {
final String line = in.readLine();
if (line.equals("#GO#")) {
System.out.println("#GO#");
mainActivityIntent = new Intent(welcomeActivity,
MainActivity.class);
welcomeActivity.startActivity(mainActivityIntent);
} else if (line.equals("#CLOSE#")) {
client.close();
break;
} else if (line.startsWith("#RESULTS")) {
Intent i = new Intent(MainActivity.getContext(), PopUpActivity.class);
i.putExtra(line, line);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
MainActivity.getContext().startActivity(i);
}
}
}
WelcomeActivity:
public void onClick(View v) {
ip = ipText.getText().toString();
port = Integer.parseInt(portText.getText().toString());
login = loginText.getText().toString();
password = passwordText.getText().toString();
credentials = login + "#" + password + "#" + brand + "#" + device + "#"
+ hardware + "#" + manufacturer + "#" + product;
client = new Client(ip, port, this);
new Handler().start();
}
private class Handler extends Thread {
public void run() {
try {
client.run();
} catch (Exception e) {
e.printStackTrace();
}
}
}
PopUpActivity:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_pop_up);
closeButton = (Button) findViewById(R.id.closeButton);
testOutcome = (TextView) findViewById(R.id.textArea);
closeButton.setOnClickListener(this);
//
Bundle extras = getIntent().getExtras();
if (extras == null) {
return;
}
String value = extras.getString(Intent.EXTRA_TEXT);
if (value != null) {
testOutcome.setText(value);
}
}
PopUpActivity已启动,但未显示文字。
在此之前,我尝试在MainActivity中使用Context:
final static Context context;
....
public void onCreate() {
context = getBaseContext();
// or context = getApplicationContext();
....
}
...
public static Context getContext() {
return context;
}
从克林特试图打电话:
MainActivity.getContext().getTextView().setText(line);
在开始时我绑定了一个AlertDialog,但它也很糟糕,NullPointerException
答案 0 :(得分:3)
问题在于你的意图,所以你可以写
您的MainActivity中的i.putExtra("line",line);
你可以通过它来检索它
您的PopUp活动中的Intent intent = getIntent(); intent.getStringExtra("line");
。