【问题标题】:Send info from class to another class getIntent将信息从班级发送到另一个班级 getIntent
【发布时间】:2014-08-18 18:54:39
【问题描述】:

我一直在努力学习 java,这样我就可以为 android 编程。我制作了一个有 2 个类的应用程序,Match 和 MatchResult。在 Match 中,您可以按下一个按钮,它会将一个按钮添加到计数器中。在页面底部我有一个按钮,它将带您进入下一堂课并在文本视图中显示计数器。我试图通过 getIntent 发送信息,但我找不到它的错误。代码如下:

匹配:

    public class Match extends Activity implements OnClickListener {

public final static String EXTRA_MESSAGE_HOME = "com.epstudios.basketballmanager_v1.MATCHRESULT";
public final static String EXTRA_MESSAGE_AWAY = "com.epstudios.basketballmanager_v1.MATCHRESULT";
TextView awayGoals, homeGoals, home, away;
Button homebtn, awaybtn, gotoresult;
int homecount, awaycount;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.match);

    baconAndEggs();

    homebtn.setOnClickListener(this);
    awaybtn.setOnClickListener(this);
    gotoresult.setOnClickListener(this);


}

 public void sendInfo(View view) {
     Intent intent = new Intent(this, MatchResult.class);
       intent.putExtra(EXTRA_MESSAGE_AWAY, awaycount);
       intent.putExtra(EXTRA_MESSAGE_HOME, homecount);
       startActivity(intent);
    }

private void baconAndEggs() {
    awayGoals = (TextView) findViewById(R.id.Away);
    homeGoals = (TextView) findViewById(R.id.Home);
    homebtn = (Button) findViewById(R.id.homeBtn);
    awaybtn = (Button) findViewById(R.id.awayBtn);
    gotoresult = (Button) findViewById(R.id.matchResult);

}

public void counter() {
    awaycount = 1;
    homecount = 0;
}

@Override
public void onClick(View v) {
    // TODO Auto-generated method stub
    switch (v.getId()) {
    case R.id.homeBtn:
        homecount++;
        homeGoals.setText("Lakers: " + homecount);
        break;
    case R.id.awayBtn:
        awaycount++;
        awayGoals.setText("Heat: " + awaycount);
        break;
    case R.id.matchResult:
        Intent result = new Intent(this, MatchResult.class);
        startActivity(result);
        break;
    }
}

@Override
protected void onPause() {
    // TODO Auto-generated method stub
    super.onPause();
    finish();
}
}

比赛结果:

    public class MatchResult extends Activity {

TextView home, away;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.match_result);

    resultcounter();

    int awayresult = getIntent().getIntExtra(Match.EXTRA_MESSAGE_AWAY, -1);
    int homeresult = getIntent().getIntExtra(Match.EXTRA_MESSAGE_HOME, -1);

    home.setText(String.valueOf(homeresult));
    Log.d("Petter", String.valueOf(homeresult));
    away.setText(String.valueOf(awayresult));
}

public void resultcounter() {
    // TODO Auto-generated method stub

    home = (TextView) findViewById(R.id.homeresult);
    away = (TextView) findViewById(R.id.awayresult);
}
}

【问题讨论】:

  • Match.EXTRA_MESSAGE_AWAY 与上述 2 个活动中的 EXTRA_MESSAGE_AWAY 不同
  • 但是这表明它来自哪个类?
  • 是什么意思?我没听懂?
  • 你的密钥对于两个常量 com.epstudios.basketballmanager_v1.MATCHRESULT??
  • 在 EXTRA_MESSAGE_AWAY 前面发送 Match 显示它来自哪个类

标签: java android xml eclipse android-intent


【解决方案1】:

嗯,为什么不尝试废弃您的 sendInfo() 函数并在您的结果意图下添加这一行:

result.putExtra(Match.EXTRA_MESSAGE_AWAY, awayCount);

它现在应该可以工作了。

【讨论】:

    【解决方案2】:

    似乎代码有两种调用 MatchResult 活动的方法,因此尝试使用:

    hasExtra() 方法检查该额外内容是否与 Intent 一起传递。

    【讨论】:

      【解决方案3】:

      Intent 的构造函数应该有你的类的上下文。但在你的情况下this 指的是View.OnClickListener()!所以,只需如下所示进行更改。

      ...
      case R.id.matchResult:
        Intent result = new Intent(Match.this, MatchResult.class); // Like here
        result.putExtra(EXTRA_MESSAGE_AWAY, awaycount);
        result.putExtra(EXTRA_MESSAGE_HOME, homecount);
        startActivity(result);
        break;
      }
      ...
      

      编辑:您从未使用过 sendInfo 方法。据我所知,您可以删除您的 sendInfo 方法并将这些代码放入 switch case。

      【讨论】:

        【解决方案4】:

        我将创建一个在活动之间共享的静态变量。

        【讨论】:

          猜你喜欢
          • 2023-03-21
          • 2021-11-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-11-05
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多