2016-04-20 93 views
0

我有一个片段活动,我正在使用它来制作标签栏。在这个活动中,我打算把一些表或ListViews与一些随机值。片段中的Android活动方法

这里是我的代码:

import com.example.mvaguimaraes.beetrackprov.R; 

import android.app.Activity; 
import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentActivity; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ListView; 
import android.widget.ArrayAdapter; 
import android.widget.Toast; 
import android.widget.TextView; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.AdapterView; 


public class Orders extends Fragment { 

    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     return inflater.inflate(R.layout.orders, container, false); 

     ListView listView1 = (ListView) findViewById(R.id.listView1); 


     Order[] items = { 
       new Order(1, "Milk", 21.50), 
       new Order(2, "Butter", 15.99), 
       new Order(3, "Yogurt", 14.90), 
       new Order(4, "Toothpaste", 7.99), 
       new Order(5, "Ice Cream", 10.00), 
     }; 

     ArrayAdapter<Order> adapter = new ArrayAdapter<Order>(this, 
       android.R.layout.simple_list_item_1, items); 

     listView1.setAdapter(adapter); 

     listView1.setOnItemClickListener(new OnItemClickListener() { 

      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, 
            long id) { 

       String item = ((TextView) view).getText().toString(); 

       Toast.makeText(getBaseContext(), item, Toast.LENGTH_LONG).show(); 

      } 
     }); 

    } 

} 

的问题是,我不能延长我的订单类片段和活动,所以我让我的代码中的错误:

无法解析方法findViewByID(INT )

ListView listView1 = (ListView) findViewById(R.id.listView1); 

无法解析构造

ArrayAdapter<Order> adapter = new ArrayAdapter<Order>(this, 
       android.R.layout.simple_list_item_1, items); 

无法解析法getBaseContext()

Toast.makeText(getBaseContext(), item, Toast.LENGTH_LONG).show(); 

可能是因为他们继承了一些活动。有什么办法可以让它们在片段内工作?对不起,我的新手我是Android开发新手。

要点击列表视图我的onItemClick的public void方法后没这个权利的项目之一后,开启另一个画面:

String item = ((TextView) view).getText().toString(); 

       Intent i = new Intent(getApplicationContext(), OrderDetails.class); 
       i.putExtra("new_variable_name",item); 

       Intent browserIntent = 
         new Intent(Orders.this, OrderDetails.class); 

       startActivity(browserIntent); 
       startActivity(i); 

我试着更换两个“getApplicationContext()”和“订单。这个“与”getActivity()“,但它没有奏效。

回答

2

片段没有像活动一样的findViewById()方法。相反,您致电findViewById()查找ViewonCreateView()膨胀布局返回的意见。另外,在需要Context的地方,您通常使用Activity,通过调用getActivity()附加片段。

public class Orders extends Fragment { 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View v = inflater.inflate(R.layout.orders, container, false); 
     ListView listView1 = (ListView) v.findViewById(R.id.listView1); 

     Order[] items = { 
       new Order(1, "Milk", 21.50), 
       new Order(2, "Butter", 15.99), 
       new Order(3, "Yogurt", 14.90), 
       new Order(4, "Toothpaste", 7.99), 
       new Order(5, "Ice Cream", 10.00), 
     }; 

     ArrayAdapter<Order> adapter = new ArrayAdapter<Order>(getActivity(), 
       android.R.layout.simple_list_item_1, items); 

     listView1.setAdapter(adapter); 

     listView1.setOnItemClickListener(new OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, 
            long id) { 
       String item = ((TextView) view).getText().toString(); 
       Toast.makeText(getActivity(), item, Toast.LENGTH_LONG).show(); 
      } 
     }); 

     return v; 
    } 
} 
+2

非常感谢!它非常完美! –

+0

你能帮我多做一件事吗?在点击Listview中的项目后,我想打开一个新的屏幕/活动,并将“项目”发送到此屏幕。我将使用我的代码修改原始帖子。 –

+0

刚刚修改了原来的问题。你介意帮我吗? –