Это один из самых неприятных вопросов, которые вы когда-либо найдете, но в моем приложении для Android мне нужно иметь несколько разных «экранов»; где вы входите в систему, и представление, представляющее вопрос (будет много вопросов, поэтому мне нужно сделать вид для каждого вопроса и изменить его на следующий вид при нажатии следующей кнопки. Позвольте мне объяснить с помощью блок-схема:Приложение для Android Множество просмотров
Пользователь открывает приложение -> Экран входа в систему -> Вход в систему -> Просмотр изменений в автоматически сгенерированном виде для вопроса 1 -> Следующая кнопка нажата -> вопрос 2 -> все вопросы -> Окончательный вид, который гласит: вы сделали.
Я создал два xml
макета файлов, один называется основной и один под названием викторины (который представляет вопрос).
Я остановлюсь на что-нибудь необходимо.
UPDATE
Вот мои два класса деятельности:
package me.nrubin29.quiz.student;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class Main extends Activity {
/**
* Called when the activity is first created.
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final Button done = (Button) findViewById(R.id.done);
final EditText serverAddress = (EditText) findViewById(R.id.serverAddress);
final EditText secretNumber = (EditText) findViewById(R.id.secretNumber);
final EditText name = (EditText) findViewById(R.id.name);
done.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
String addr = serverAddress.getText().toString();
String num = secretNumber.getText().toString();
String n = name.getText().toString();
if (addr.equals("") || num.equals("") || n.equals("")) {
Toast.makeText(getApplicationContext(), "You didn't fill in all the fields.", Toast.LENGTH_LONG).show();
return;
}
new Connection().initConnection(Main.this, addr, num, n);
}
});
}
}
package me.nrubin29.quiz.student;
import android.app.Activity;
import android.os.Bundle;
import android.widget.RadioButton;
public class Quiz extends Activity {
/**
* Called when the activity is first created.
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.quiz);
final RadioButton radioButton1 = (RadioButton) findViewById(R.id.radioButton);
final RadioButton radioButton2 = (RadioButton) findViewById(R.id.radioButton1);
final RadioButton radioButton3 = (RadioButton) findViewById(R.id.radioButton2);
final RadioButton radioButton4 = (RadioButton) findViewById(R.id.radioButton3);
radioButton1.setText("Testing!");
}
}
А вот мои два XMLs:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Please enter the server address and secret number your teacher gives you."
/>
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/serverAddress" android:layout_gravity="center"
android:phoneNumber="true"
android:hint="Server Address"/>
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/secretNumber" android:layout_gravity="center"
android:phoneNumber="true"
android:hint="Secret Number"/>
<Space
android:layout_width="fill_parent"
android:layout_height="20px"
android:id="@+id/space1"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Please enter your name."
android:id="@+id/textView2" android:layout_gravity="left|center_vertical"/>
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/name" android:layout_gravity="left|center_vertical"
android:hint="Name"/>
<Space
android:layout_width="fill_parent"
android:layout_height="20px"
android:id="@+id/space"/>
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Done"
android:id="@+id/done" android:layout_gravity="center"/>
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<RadioGroup
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_gravity="center">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Question"
android:id="@+id/textView"/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New RadioButton"
android:id="@+id/radioButton"
android:layout_gravity="center"/>
<RadioButton
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="New RadioButton"
android:id="@+id/radioButton1"/>
<RadioButton
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="New RadioButton"
android:id="@+id/radioButton2"/>
<RadioButton
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="New RadioButton"
android:id="@+id/radioButton3"/>
</RadioGroup>
</LinearLayout>
ОБНОВЛЕНИЕ! А вот мой новый класс Connection:
package me.nrubin29.quiz.student;
import android.app.Activity;
import android.content.Intent;
import android.widget.Toast;
import me.nrubin29.quiz.student.receivedQuiz.Quiz;
import java.io.EOFException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;
public class Connection {
private Connection() { }
private static Connection instance = new Connection();
public static Connection getInstance() {
return instance;
}
private Quiz quiz;
private Socket socket;
private Thread reader;
private ObjectInputStream inputStream;
private ObjectOutputStream outputStream;
public void initConnection(final Activity activity, final String ip, final String port, final String name) {
new Thread(new Runnable() {
public void run() {
try {
activity.runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(activity.getApplicationContext(), "Starting connection to " + ip + ":" + Integer.parseInt(port), Toast.LENGTH_SHORT).show();
}
});
socket = new Socket(ip, Integer.parseInt(port));
activity.runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(activity.getApplicationContext(), "Connected!", Toast.LENGTH_SHORT).show();
}
});
outputStream = new ObjectOutputStream(socket.getOutputStream());
inputStream = new ObjectInputStream(socket.getInputStream());
outputStream.writeObject(name);
quiz = new Quiz((String) inputStream.readObject());
Intent i = new Intent(activity, me.nrubin29.quiz.student.Quiz.class);
activity.startActivity(i);
reader = new Thread(new Runnable() {
public void run() {
while (true) {
try {
Object in = inputStream.readObject();
}
catch (final EOFException e) { activity.runOnUiThread(new Runnable() { public void run() { Toast.makeText(activity.getApplicationContext(), e.getMessage(), Toast.LENGTH_SHORT).show(); } }); }
catch (Exception e) { e.printStackTrace(); }
}
}
});
reader.start();
}
catch (Exception e) { e.printStackTrace(); }
}
}).start();
}
public Quiz getQuiz() {
return this.quiz;
}
}
As far as the Activity for Quiz, I guess I should make a constructor that takes the question and answers and sets the text of the radio buttons? Also, how exactly (code example would rock) would I create go about answering the question with the code above?
Итак, если я использую «ViewPager», я должен сгенерировать каждое «представление» и поместить их все в «массив» и использовать этот «массив» с помощью VewPager? – nrubin29
Нет, вы помещаете данные в 'Array', тогда вы можете использовать те же' View 'и просто обновлять данные на каждой странице. – codeMagic
Похоже, было бы проще иметь один« просмотр »и обновлять представление с помощью новый текст. Как я могу просто настроить активное представление на 'quiz.xml'? Я могу справиться с прослушивателем кнопок, сменять текст и многое другое. – nrubin29