将数据从一个活动传递到另一个Android [英] Pass data from one activity to another Android

查看:87
本文介绍了将数据从一个活动传递到另一个Android的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

你能帮我吗?我开发了一个带有测验的应用程序。测验完成后,会出现一个显示分数的新活动(结果)。我想把分数传给一个新的活动即分数。这是我的代码。怎么了。分数必须在textview中显示。

 Result.java 

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class 结果 extends 活动
{

私人 静态按钮playbtn ;
private static 按钮menubutton;
@覆盖
受保护 void onCreate(Bundle savedInstanceState){
super .onCreate(savedInstanceState);
setContentView(R.layout.activity_result);
OnClickPlayButtonListener();
OnClickMenuButtonListener();
TextView textResult =(TextView)findViewById(R.id.textResult);
Bundle b = getIntent()。getExtras();
int 得分= b.getInt( 分数);
textResult.setText( 你得分 + +得分+ for测验。);
Intent i = new Intent(getApplicationContext(),Result。 class );
i.putExtra( somevariable,得分);
startActivity(i);
}

public void OnClickPlayButtonListener(){
playbtn =(Button)findViewById(R.id.btn);
playbtn.setOnClickListener(
new View.OnClickListener(){
@ Override
public void onClick(查看v){
意图意图= new 意图( app.mobiledevicesecurity.Quiz);
startActivity(intent);
}
}
);
}

public void OnClickMenuButtonListener(){
menubutton =(Button)findViewById(R.id.menubtn);
menubutton.setOnClickListener(
new View.OnClickListener(){
@ Override
public void onClick(查看v){
意图意图= new Intent(getApplicationContext(),MainActivity。 class );
startActivity(intent);
}
}
);





Scores.java

< pre lang =java> import android.view.MenuItem;
import android.widget.TextView;
import android.content.Intent;

public class 分数 extends ActionBarActivity {

@ Override
protected < span class =code-keyword> void onCreate(Bundle savedInstanceState){
super .onCreate(savedInstanceState);
setContentView(R.layout.activity_scores);
Intent intent = getIntent();
字符串 value = intent.getStringExtra( somevariable);
TextView txtScore1 =(TextView)findViewById(R.id.txtScore1);
txtScore1.setText( 你得分 + + value + for测验。);
}

@覆盖
public boolean onCreateOptionsMenu(菜单菜单){
// 充气菜单;这会将项目添加到操作栏(如果存在)。
getMenuInflater()。inflate(R.menu.menu_scores,menu);
返回 true;
}

@覆盖
public boolean onOptionsItemSelected(MenuItem item){
// Handle操作栏项目点击此处。操作栏将
// 自动处理Home / Up按钮上的点击,
// 在AndroidManifest.xml中指定父活动。
int id = item.getItemId();

// noinspection SimplifiableIfStatement
if (id == R.id.action_settings){
return true;
}

return super .onOptionsItemSelected(item);
}
}

解决方案

而不是Result.class:

 Intent i = new Intent(getApplicationContext(),Result.class); 

'

不应该是:

 Intent i = new Intent(getApplicationContext(),Scores.class); 


Quiz.java

< pre lang =java> package app.mobiledevicesecurity;

import java.util.List;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Typeface;
import android.media.MediaPlayer;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class 测验扩展活动
{
列表<问题> questionList;
int 得分= 0 ;
int qid = 0 ;
问题currentQuest;
TextView txtQuestion,得分;
按钮1,按钮2,按钮3;

@ Override
protected void onCreate(Bundle savedInstanceState)
{
super .onCreate(savedInstanceState);
setContentView(R.layout.activity_quiz);
QuizHelper db = new QuizHelper( this );
questionList = db.getAllQuestions();
currentQuest = questionList.get(qid);
txtQuestion =(TextView)findViewById(R.id.txtQuestion);

button1 =(Button)findViewById(R.id.button1);
button2 =(Button)findViewById(R.id.button2);
button3 =(Button)findViewById(R.id.button3);

scored =(TextView)findViewById(R.id.score);



setQuestionView();

button1.setOnClickListener( new View.OnClickListener()
{
@Override
public void onClick(查看v){
getAnswer(button1.getText()。toString());
}
});

button2.setOnClickListener( new View.OnClickListener()
{
@Override
public void onClick(查看v){
getAnswer(button2.getText()。toString());
}
});

button3.setOnClickListener( new View.OnClickListener()
{
@Override
public void onClick(查看v){
getAnswer(button3.getText()。toString());
}
});
}
public void getAnswer( String AnswerString)
{
if (currentQuest.getAnswer()。equals(AnswerString))
{
得分++;
scored.setText( 得分: +得分);
}
else
{

意图意图= 意图(测验。
结果。 class );
Bundle b = new Bundle();
b.putInt( 得分,得分);
intent.putExtras(b);
startActivity(intent);
完成();


}
if (qid< questionList.size()){
currentQuest = questionList获得(QID);
setQuestionView();
}
else
{

意图意图= 意图(测验。
结果。 class );
Bundle b = new Bundle();
b.putInt( 得分,得分);
intent.putExtras(b);
startActivity(intent);
完成();


}
}

private void setQuestionView()
{
txtQuestion.setText(currentQuest.getQuest());
button1.setText(currentQuest.getOption1());
button2.setText(currentQuest.getOption2());
button3.setText(currentQuest.getOption3());
qid ++;
}
}





Result.java

  package  app.mobiledevicesecurity; 

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class 结果 extends 活动{

私人 静态按钮播放;
private static 按钮menubutton;

@ Override
protected void onCreate(Bundle savedInstanceState){
super .onCreate(savedInstanceState);
setContentView(R.layout.activity_result);
OnClickPlayButtonListener();
OnClickMenuButtonListener();
TextView textResult =(TextView)findViewById(R.id.textResult);
Bundle b = getIntent()。getExtras();
int 得分= b.getInt( 分数);
textResult.setText( 你得分 + +得分+ for测验。);

意图intent2 = 意图(结果。
分数。 class );
Bundle bun = new Bundle();
bun.putInt( 得分,得分);
intent2.putExtras(bun);
startActivity(intent2);
完成();
}

public void OnClickPlayButtonListener(){
playbtn =(Button)findViewById(R.id.btn);
playbtn.setOnClickListener(
new View.OnClickListener(){
@ Override
public void onClick(查看v){
意图意图= new 意图( app.mobiledevicesecurity.Quiz);
startActivity(intent);
}
}
);
}

public void OnClickMenuButtonListener(){
menubutton =(Button)findViewById(R.id.menubtn);
menubutton.setOnClickListener(
new View.OnClickListener(){
@ Override
public void onClick(查看v){
意图意图= new Intent(getApplicationContext(),MainActivity。 class );
startActivity(intent);
}
}
);
}
}





Scores.java

  package  app.mobiledevicesecurity; 

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;



import android.widget.TextView;
import android.content.Intent;

public class 分数 extends ActionBarActivity {

@ Override
protected < span class =code-keyword> void onCreate(Bundle savedInstanceState){
super .onCreate(savedInstanceState);
setContentView(R.layout.activity_scores);

TextView txtScore1 =(TextView)findViewById(R.id.txtScore1);
Bundle bun = getIntent()。getExtras();
int score = bun.getInt( 分数);
txtScore1.setText( 得分: + +得分+ for测验。);
}

@覆盖
public boolean onCreateOptionsMenu(菜单菜单){
// 充气菜单;这会将项目添加到操作栏(如果存在)。
getMenuInflater()。inflate(R.menu.menu_scores,menu);
返回 true;
}

@覆盖
public boolean onOptionsItemSelected(MenuItem item){
// Handle操作栏项目点击此处。操作栏将
// 自动处理Home / Up按钮上的点击,
// 在AndroidManifest.xml中指定父活动。
int id = item.getItemId();

// noinspection SimplifiableIfStatement
if (id == R.id.action_settings){
return true;
}

return super .onOptionsItemSelected(item);
}
}





我现在唯一的问题是测验后的分数活动显示而不是结果活动。请帮助我的任何人


通过覆盖onActivityResult使用startActivityForResult和处理程序回调


Can you help me. I have developed a app with a quiz. When the quiz is finished a new activity (result) appears showing the score. I want to pass the score to a new activity namely scores. Here is my code. What is wrong. The score must be showed in a textview.

Result.java

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class Result extends Activity
{

    private static Button playbtn;
    private static Button menubutton;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_result);
        OnClickPlayButtonListener();
        OnClickMenuButtonListener();
        TextView textResult = (TextView) findViewById(R.id.textResult);
        Bundle b = getIntent().getExtras();
        int score = b.getInt("score");
        textResult.setText("You scored" + " " + score + " for the quiz.");
        Intent i = new Intent(getApplicationContext(), Result.class);
        i.putExtra("somevariable",score);
        startActivity(i);
    }

    public void OnClickPlayButtonListener() {
        playbtn = (Button) findViewById(R.id.btn);
        playbtn.setOnClickListener(
                new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Intent intent = new Intent("app.mobiledevicesecurity.Quiz");
                        startActivity(intent);
                    }
                }
        );
    }

    public void OnClickMenuButtonListener() {
        menubutton = (Button) findViewById(R.id.menubtn);
        menubutton.setOnClickListener(
                new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                      Intent intent = new Intent(getApplicationContext(), MainActivity.class);
                        startActivity(intent);
                      }
                }
        );



Scores.java

import android.view.MenuItem;
import android.widget.TextView;
import android.content.Intent;

public class Scores extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_scores);
        Intent intent = getIntent();
        String value = intent.getStringExtra("somevariable");
        TextView txtScore1 = (TextView) findViewById(R.id.txtScore1);
        txtScore1.setText("You scored" + " " + value + " for the quiz.");
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_scores, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}

解决方案

Instead of Result.class:

Intent i = new Intent(getApplicationContext(), Result.class);

'
shouldn't it be:

Intent i = new Intent(getApplicationContext(), Scores.class);


Quiz.java

package app.mobiledevicesecurity;

import java.util.List;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Typeface;
import android.media.MediaPlayer;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class Quiz extends Activity
{
    List<question> questionList;
    int score = 0;
    int qid = 0;
    Question currentQuest;
    TextView txtQuestion, scored;
    Button button1, button2, button3;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_quiz);
        QuizHelper db = new QuizHelper(this);
        questionList = db.getAllQuestions();
        currentQuest = questionList.get(qid);
        txtQuestion = (TextView) findViewById(R.id.txtQuestion);

        button1 = (Button) findViewById(R.id.button1);
        button2 = (Button) findViewById(R.id.button2);
        button3 = (Button) findViewById(R.id.button3);

        scored = (TextView) findViewById(R.id.score);



        setQuestionView();

        button1.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v) {
               getAnswer(button1.getText().toString());
            }
        });

        button2.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v) {
                getAnswer(button2.getText().toString());
            }
        });

        button3.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v) {
                getAnswer(button3.getText().toString());
            }
        });
    }
    public void getAnswer(String AnswerString)
    {
        if (currentQuest.getAnswer().equals(AnswerString))
        {
            score++;
            scored.setText("Score : " + score);
        }
        else
        {

            Intent intent = new Intent(Quiz.this,
                    Result.class);
            Bundle b = new Bundle();
            b.putInt("score", score);
            intent.putExtras(b);
            startActivity(intent);
            finish();


        }
        if (qid < questionList.size()) {
            currentQuest = questionList.get(qid);
            setQuestionView();
        }
        else
        {

            Intent intent = new Intent(Quiz.this,
                    Result.class);
            Bundle b = new Bundle();
            b.putInt("score", score);
            intent.putExtras(b);
            startActivity(intent);
            finish();


        }
    }

    private void setQuestionView()
    {
        txtQuestion.setText(currentQuest.getQuest());
        button1.setText(currentQuest.getOption1());
        button2.setText(currentQuest.getOption2());
        button3.setText(currentQuest.getOption3());
        qid++;
    }
}



Result.java

package app.mobiledevicesecurity;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class Result extends Activity {

    private static Button playbtn;
    private static Button menubutton;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_result);
        OnClickPlayButtonListener();
        OnClickMenuButtonListener();
        TextView textResult = (TextView) findViewById(R.id.textResult);
        Bundle b = getIntent().getExtras();
        int score = b.getInt("score");
        textResult.setText("You scored" + " " + score + " for the quiz.");

        Intent intent2 = new Intent(Result.this,
               Scores.class);
        Bundle bun = new Bundle();
        bun.putInt("score", score);
        intent2.putExtras(bun);
        startActivity(intent2);
        finish();
    }

    public void OnClickPlayButtonListener() {
        playbtn = (Button) findViewById(R.id.btn);
        playbtn.setOnClickListener(
                new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Intent intent = new Intent("app.mobiledevicesecurity.Quiz");
                        startActivity(intent);
                    }
                }
        );
    }

    public void OnClickMenuButtonListener() {
        menubutton = (Button) findViewById(R.id.menubtn);
        menubutton.setOnClickListener(
                new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Intent intent = new Intent(getApplicationContext(), MainActivity.class);
                        startActivity(intent);
                    }
                }
        );
    }
}



Scores.java

package app.mobiledevicesecurity;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;



import android.widget.TextView;
import android.content.Intent;

public class Scores extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_scores);

        TextView txtScore1 = (TextView) findViewById(R.id.txtScore1);
        Bundle bun = getIntent().getExtras();
        int score = bun.getInt("score");
        txtScore1.setText("score:" + " " + score + " for the quiz.");
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_scores, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}



Only problem I have now is that the Scores activity shows up after the quiz and not the Result activity. Anyone to help me please


Using startActivityForResult and handler callback by Override onActivityResult


这篇关于将数据从一个活动传递到另一个Android的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆