2016-04-20 62 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

剛剛修改了原來的問題。你介意幫我嗎? –