Android MainActivity将意图传递给另一个活动

时间:2012-11-30 08:12:39

标签: android android-asynctask

我在尝试调用另一个名为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

任何想法。?我想我在某处犯了一个愚蠢的错误。

6 个答案:

答案 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 classNameOfTheClass.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);

希望这个帮助!!