2013-09-23 3 views
0

Это один из самых неприятных вопросов, которые вы когда-либо найдете, но в моем приложении для 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? 

ответ

0

Для входа Activity просто использовать все, что вам layout вы хотите с View с необходимыми (Spinner, TextView, Button, и т.д. ...).

Если экран вопросов будет таким же, вы можете просто использовать Fragments в сочетании с ViewPager, если хотите. Это должно хорошо работать для ваших нужд. Это позволит вам предоставлять новые данные для каждого вопроса, но легко сохранить те же самые layout.

VeiwPager Docs

ViewPager example Я не смотрел на нее много, но его уроки, как правило, очень хорошо.

Если ViewPager больше, чем вам нужно/хочу прямо сейчас, вы можете просто один View на вопрос, таких как TextView и изменить текст при Button нажатии.

Редактировать

Изменить ваш Intent использовать что Context

Intent i = new Intent(activity, Quiz.class); 
    activity.startActivity(i); 
+0

Итак, если я использую «ViewPager», я должен сгенерировать каждое «представление» и поместить их все в «массив» и использовать этот «массив» с помощью VewPager? – nrubin29

+0

Нет, вы помещаете данные в 'Array', тогда вы можете использовать те же' View 'и просто обновлять данные на каждой странице. – codeMagic

+0

Похоже, было бы проще иметь один« просмотр »и обновлять представление с помощью новый текст. Как я могу просто настроить активное представление на 'quiz.xml'? Я могу справиться с прослушивателем кнопок, сменять текст и многое другое. – nrubin29

0

Вы можете осуществить это при наличии двух различных видов деятельности и каждый из которых имеет различные представления контента (XML-файлы). Деятельность по умолчанию для Launcher - это ваш экран входа в систему с файлом макета входа.

Второе действие должно быть направлено на рассмотрение вопросов. Это можно сделать, используя ваши группы просмотра, такие как RelativeLAyout, LinearLayout, FrameLayout и т. Д. В Интернете есть несколько примеров. Просто выполните поиск учебников по каждому из них.

Окончательный вид (все готово) может быть реализован в той же деятельности с другим видом или только с AlertDialog.

Смежные вопросы