我在尝试调用另一个名为FetchData
的类时遇到问题,该类又包含AsyncTask
方法。
我的主要活动代码是:
public class MainActivity extends Activity {
public final static String EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE";
private Button btn;
private EditText edit;
private Spinner spinner;
//private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = (Button) findViewById(R.id.button);
edit = (EditText) findViewById(R.id.edit_message);
spinner = (Spinner) findViewById(R.id.spinner);
//textView = (TextView) findViewById(R.id.textView1);
btn.setOnClickListener(
new View.OnClickListener()
{
public void onClick(View view)
{
//Log.v("EditText", edit.getText().toString());
// Log.v("Spinner", spinner.getSelectedItem().toString());
//if(spinner.getSelectedItem().toString()=="All Types")
String[] customarr = {"feature,tv_series,game","feature","tv_series","game"};
String selecteditem = customarr[spinner.getSelectedItemPosition()];
String url="http://cs-server.usc.edu:23405/examples/servlet/HelloWorldExample?title="+edit.getText().toString()+"&type="+selecteditem;
Log.v("url",url);
Intent intent=new Intent(this,FetchData.class);
String message=url;
intent.putExtra(EXTRA_MESSAGE, message);
startActivity(intent);
}
});
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,R.array.title_type,android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
//String url="http://cs-server.usc.edu:23405/examples/servlet/HelloWorldExample?title="+edit.getText().toString()+"&type="+spinner.getSelectedItem().toString();
// Log.v("url",url);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
//Object item = parent.getItemAtPosition(pos);
}
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
}
我有错误
The constructor Intent(new View.OnClickListener(){}, Class<FetchData>) is undefined
任何想法。?我想我在某处犯了一个愚蠢的错误。
答案 0 :(得分:3)
在Intent intent=new Intent(this,FetchData.class);
行中,将this
替换为MainActivity.this
,仅this
引用onClickListener
Intent intent=new Intent(MainActivity.this,FetchData.class);
答案 1 :(得分:3)
在构造函数中使用MainActivity.this
。这是因为您在OnClickListener
内,this
引用它。
答案 2 :(得分:2)
Intent构造函数需要将活动上下文作为其第一个参数,this
中的onClickListener()
引用click侦听器类的对象。要访问class
使用inner class
中NameOfTheClass.this
的实例引用,您的情况应为MainActivity.this
更改代码中的以下行
Intent intent=new Intent(this,FetchData.class);
到
Intent intent=new Intent(MainActivity.this,FetchData.class);
答案 3 :(得分:0)
在活动中提供的必须执行以下操作
youActivity.this
如果没有,如果仅用于此,则会引用当前的对象
我建议您在OnCreate外部执行此操作
Intent intent = new Intent(YouActivyti.this,otheractivity.class)
如果在OnCreate中找到
Intent intent = new Intent(this,otheractivity.class)
答案 4 :(得分:0)
Intent intent=new Intent(MainActivity.this,FetchData.class);
您忘记提及MainActivity
答案 5 :(得分:-1)
- &gt;你在oncreate方法中并且使用onClickListener接口所以在onCLick方法中如果你只使用 - Intent intent = new Intent(this,classname.class); 然后在这种情况下(this)引用onClickListener接口,但是你想要使用当前的类实例,这就是你必须提到的原因。
这行代码
* Intent intent = new Intent(MainActivity.this,FetchData.class);
希望这个帮助!!