Android:将信息从数组传递到textview

时间:2016-03-02 20:33:49

标签: java android arrays message-passing

我为自己设置了一个问题和答案的数组,如下所示:

static String[][] question= new String[20][5];

{
    question[0][0] = "what is my name?";
    question[0][1] = "Mark";
    question[0][2] = "Steven";
    question[0][3] = "Alan";
    question[0][4] = "Bob";

    question[1][0] = "what is my age?";
    question[1][1] = "30";
    question[1][2] = "31";
    question[1][3] = "32";
    question[1][4] = "33";
}

第一个方括号表示问题编号,第二个数字表示答案编号,所有正确的答案都在第四个答案中。我的意图是建立一个随机化并传递到下一个屏幕的问题的一般应用程序。我使用此代码为问题编号生成一个随机数。所以例如第一次尝试Q5会出现,尝试2 Q3会出现,尝试3 Q1会出现等等。

下一个代码块由android使用:onClick =" goToQuestions"

public void goToQuestions (View v)
{
    Intent intent = new Intent (this, Questions.class);
    startActivity(intent);
}

使用上面的代码将成功从当前活动转移到问题活动。如果我使用下面的代码:

protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_questions);

    final TextView textView1 = (TextView) findViewById(R.id.textView1);
    final Button button2 = (Button) findViewById(R.id.button2);
    button2.setOnClickListener(new View.OnClickListener()
    {
        public void onClick(View v)
        {
        int randomArray = (int) (Math.random() *4);
            textView1.setText(question[randomArray][0]);
        }
    });
}

它允许我从问题数组中生成一个随机数,并在它处于同一活动时将其打印到我的文本视图中。我已尝试使用以下代码尝试将信息从主屏幕传递到问题屏幕:

public void goToQuestions (View v1)
{
    final TextView textView1 = (TextView) findViewById(R.id.textView1);
    int randomArray = (int) (Math.random() * 4);
    textView1.setText(Questions.question[randomArray][0]);

    Intent intent = new Intent (this, QuizActivity.class);
    startActivity(intent);
}

我假设调用android:onClick消除了对onclick监听器的需求。任何人都可以为我如何正确完成这一点提供帮助。使用最后一段代码,当我按下按钮时,应用程序就会崩溃。

2 个答案:

答案 0 :(得分:0)

您的数据模型并不理想。创建一个代表问题的类,并且是Parcelable,因此您可以将其传递给下一个活动。像这样的东西

func updateSearchResultsForSearchController(searchController: UISearchController) {    
    let searchWord = searchController.searchBar.text!    
    getCountriesNamesFromServer(searchWord)        
}

func getCountriesNamesFromServer(searchWord:String) {        
    let url:String = "http://localhost"
    let params = ["keyword":searchWord]

    ServerRequest.postToServer(url, params: params) { result, error in    
        if let result = result {
            print(result)

            self.dict = result

            self.filteredKeys.removeAll()

            for (key, value) in self.dict {
                let valueContainsCity: Bool = (((value as? NSDictionary)?["Country"] as? NSDictionary)?["city_name"] as? String)?.uppercaseString.containsString(searchWord.uppercaseString) ?? false

                let valueContainsCountry: Bool = (((value as? NSDictionary)?["Country"] as? NSDictionary)?["country_name"] as? String)?.uppercaseString.containsString(searchWord.uppercaseString) ?? false

                if valueContainsCity || valueContainsCountry {
                    self.filteredKeys.append(key as! String)
                }
            }

            self.tableView.reloadData()   
        }               
    }
}

然后,您将在下一个活动中收到此信息,对其进行反序列化并按您认为合适的方式显示数据。

还要考虑使用片段而不是活动。

答案 1 :(得分:0)

找到我的问题,首先感谢大家的帮助。其次,我能够使用我正在使用的代码执行此任务,我只是将它放入错误的类文件中。我能够移动这段代码:

final TextView textView1 = (TextView) findViewById(R.id.textView1);
int randomArray = (int) (Math.random() * 4);
textView1.setText(Questions.question[randomArray][0]);

进入我的onCreate方法,它工作正常。