【发布时间】:2014-11-06 06:34:56
【问题描述】:
我有 2 个类 BlockIdActivity.java 和 ScanWifi.java。我在 BlockIdActivity.java 文件中有 2 个按钮,我可以看到我的 toast 在那里定义。但是我看不到我在 ScanWifi.Java 类中定义的按钮的吐司。
以下是 BlockIdActivity.java 的代码
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.text.TextUtils;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageButton;
import android.widget.TextView;
import android.widget.Toast;
public class BlockIdActivity extends ActionBarActivity {
private ImageButton mUpButton;
private ImageButton mDownButton;
private TextView mBlock_Id_Field;
int counter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_block_id);
mUpButton = (ImageButton)findViewById(R.id.arrow_up);
mDownButton = (ImageButton)findViewById(R.id.arrow_down);
mBlock_Id_Field = (TextView)findViewById(R.id.BlockIdField);
mUpButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mBlock_Id_Field.getText().toString().trim().equals(""))
{
counter = 1;
mBlock_Id_Field.setText(String.valueOf(counter));
}
else {
counter = Integer.valueOf(mBlock_Id_Field.getText().toString().trim());
counter++;
mBlock_Id_Field.setText(String.valueOf(counter));
}
}
});
mDownButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int counter = Integer.valueOf(mBlock_Id_Field.getText().toString().trim());
// boolean emptyfield = mBlock_Id_Field.getText().toString().equals("");
if(counter <=1 ){
Toast.makeText(BlockIdActivity.this,
R.string.negative_blockid_toast,
Toast.LENGTH_SHORT).show();
counter = 1;
mBlock_Id_Field.setText(String.valueOf(counter));
}else {
counter--;
mBlock_Id_Field.setText(String.valueOf(counter));
}
}
});
}
}
ScanWifi.java 的代码
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class ScanWifi extends ActionBarActivity {
private Button mScanWifiButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_block_id);
mScanWifiButton = (Button)findViewById(R.id.ScanWifiButton);
mScanWifiButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getBaseContext(),
R.string.ScanWifi_toast,
Toast.LENGTH_SHORT).show();
}
});
}
}
这是 strings.xml 文件:
<resources>
<string name="app_name">SnifferTrain</string>
<string name="BlockId">BlockId</string>
<string name="ScanWifi">ScanWifi</string>
<string name="ScanWifi_toast">ScanWifi Button Pressed</string>
<string name="negative_blockid_toast">Block Id Field Cannot Be Less Than 1 or Empty.Setting BlockID To 1</string>
<string name="action_settings">Settings</string>
</resources>
有人可以解释为什么我按下 ScanWifi 按钮时 ScanWifi_toast 不显示。我尝试将 toast 的上下文更改为 ScanWifi.this 或 getApplicationContext() 但它似乎不起作用。我没有收到任何编译错误。请帮忙
【问题讨论】:
-
将
R.string.ScanWifi_toast更改为getResource().getString(R.string.ScanWifi_toast) -
总是尝试在 String.xml 中用小写而不是大写来定义名称 更详细的检查:developer.android.com/guide/topics/resources/…
-
尽管到目前为止所有的答案,有一个
Toast.makeText()的重载,它接受一个字符串资源ID,它工作正常。问题出在其他地方。考虑在您的代码中添加日志记录或调试器断点,以首先确认它已运行,如果没有,请找出它未运行的原因。 -
@laalto :是的,我已经尝试了这些建议,但我仍然没有看到吐司。我会尝试你的建议。
-
查看这两个文件,我看到您说它在执行
Toast.makeText(BlockIdActivity.this时有效,但在执行Toast.makeText(getBaseContext()时失败。这是提示吗?您的 LogCat 中是否收到错误消息?
标签: android android-toast