2014-11-06 92 views
-3

我有2个类BlockIdActivity.java和ScanWifi.java。我在BlockIdActivity.java文件中有2个按钮,并且我能够在那里看到我的烤面包。但是我不能看到我在ScanWifi.Java类中定义的按钮的敬酒。吐司消息不工作android

以下为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> 

有人可以p租约解释为什么当我按下ScanWifi按钮时ScanWifi_toast不显示。我已经尝试将敬酒的上下文更改为ScanWifi.this或getApplicationContext(),但它似乎不起作用。我没有收到任何编译错误。请帮助

+1

变化'R.string.ScanWifi_toast'到'的getResource()的getString(R.string.ScanWifi_toast)' – 2014-11-06 06:35:58

+0

总是试图以小写定义名称String.xml更详细的检查,而不是大写:HTTP:/ /developer.android.com/guide/topics/resources/string-resource.html#FormattingAndStyling – 2014-11-06 06:41:41

+1

尽管到目前为止所有的答案,有一个Toast.makeText()接受字符串资源ID的重载,它的工作原理是正确的。问题在别的地方。考虑在代码中添加日志记录或调试器断点以确认它已运行,如果没有,请找出为什么它不运行。 – laalto 2014-11-06 06:42:43

回答

0

用这个Toast消息

Toast.makeText(getBaseContext(), 
        getResource().getString(R.string.ScanWifi_toast), 
        Toast.LENGTH_SHORT).show(); 
0

它应该是:

Toast.makeText(getBaseContext(),getResource().getString(R.string.ScanWifi_toast), Toast.LENGTH_SHORT).show(); 

因为R.string.ScanWif i_toast自动不返回String你把你的XML,它仅返回id

1

我想你的字符串文件的问题。不要像其他的方式:

Toast.makeText(ScanWifi.this,getResource().getString(R.string.string.ScanWifi_toast),Toast.LENGTH_SHORT).show(); 
0

你应该在的地方使用getString(R.string.ScanWifi_toast)直接使用R.string.ScanWifi_toast

0

的试试这个

Toast.makeText(context, context.getString(R.string.ScanWifi_toast), Toast.LENGTH_LONG).show(); 
0

您可以使用此

Toast.makeText(getBaseContext(),"xyz",Toast.LENGTH_SHORT).show(); 

Toast.makeText(Activity.this,string,Toast.LENGTH_SHORT).show(); 
+0

您可以直接采用Ur的字符串值面包Toast直接...或分配字符串中的值使用Toast ... – Amitsharma 2014-11-06 07:06:51

1

您的ScanWifi活动代码未运行。因此,点击监听器没有注册到屏幕上的按钮,因此看不到烤面包。

由于您的活动都使用相同的内容视图布局,因此您应该将findViewById()setOnClickListener()移动到主要活动。

要启动其他活动,请使用Intent,例如, 。

startActivity(new Intent(context, ActivityName.class)); 
+0

如果我将findViewById()和setOnClickListener()移动到主那么ScanWifi.java类的大部分代码都会被移动到mainactivity文件中?在这种情况下,我可以创建另一个按钮以及已经存在的2个按钮,并实现与之相同的逻辑。我将findViewById()和setOnClickListener()放在一个独立的ScanWifi.java类中的原因是为了让所有的widget保持独立,因为scanwifi将来会变得更加复杂。我现在只需要它在ScanWifi.java中工作?你能告诉我如何开始ScanWifi活动吗? – srai 2014-11-06 08:54:57

+0

如果你想要另一个布局的活动,你可以这样做,只需在'setContentView()'中使用另一个布局名称即可。使用带'ScanWifi.class'的'startActivity()'来启动它。 – laalto 2014-11-06 09:00:51

+0

我实际上想为ScanWifi.class使用相同的布局。是否可以使用相同的布局,但像我最初尝试过的那样,为blockidactivity和scanwifi活动启动不同的活动? – srai 2014-11-06 09:23:43