2015-01-14 3 views
1

안녕하세요. 내 코드를 볼 수 있습니다. 내 문제는 :이 코드 내 EditText 및 내 단추 필드는 null 그래서 그들과 함께 anithing 할 수 없습니다.Android FragmentActivity questions

Plz이 단추에 액세스하는 것을 도와 줄 수 있습니까? 활동에 대해서는 이클립스가 자동 생성했습니다.

public class MainActivity extends ActionBarActivity { 

private EditText commentaire; 
private Button addReleve; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    if (savedInstanceState == null) { 
     getSupportFragmentManager().beginTransaction() 
       .add(R.id.container, new PlaceholderFragment()).commit(); 
    } 

    this.commentaire = (EditText) findViewById(R.id.commentaire); 
    this.addReleve = (Button) findViewById(R.id.addReleve); 

    addReleve.setOnTouchListener(new OnTouchListener() { 

     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      Toast toast = Toast.makeText(getApplicationContext(), "LOL", Toast.LENGTH_LONG); 
      toast.show(); 
      return false; 
     } 
    }); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 

    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 
    if (id == R.id.action_settings) { 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 

/** 
* A placeholder fragment containing a simple view. 
*/ 
public static class PlaceholderFragment extends Fragment { 

    public PlaceholderFragment() { 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.fragment_main, container, 
       false); 
     return rootView; 
    } 
} 

public void resetInterface(){ 

    this.commentaire.setText(""); 
    this.addReleve.setEnabled(true); 
} 

} 

XML 레이아웃 (fragment_main.xml) :

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context="com.example.relevegps.MainActivity$PlaceholderFragment" > 

<TextView 
    android:id="@+id/textView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="32dp" 
    android:text="Relevé GPS" 
    android:textAppearance="?android:attr/textAppearanceLarge" /> 

<Button 
    android:id="@+id/addReleve" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_centerHorizontal="true" 
    android:layout_marginBottom="92dp" 
    android:text="Ajouter le relevé" /> 

<EditText 
    android:id="@+id/commentaire" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true" 
    android:layout_centerVertical="true" 
    android:ems="10" /> 

<TextView 
    android:id="@+id/textView2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_above="@+id/commentaire" 
    android:layout_centerHorizontal="true" 
    android:layout_marginBottom="26dp" 
    android:text="Commentaire" /> 
</RelativeLayout> 
+0

나는 그들이 ** fragment_main.xml ** – vilpe89

+0

당신이 당신의 XML 레이아웃을 추가 시겠어요에있는 것 같아요? – Christopher

+0

예 EditText 및 Button이 fragment_main.xml에 있습니다. –

답변

3
try this also. 
public static class PlaceholderFragment extends Fragment { 

    public PlaceholderFragment() { 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.fragment_main, container, 
       false); 
EditText commentaire = (EditText) rootView.findViewById(R.id.commentaire); 
    Button addReleve = (Button) rootView.findViewById(R.id.addReleve); 

commentaire.setText(""); 
addReleve.setEnabled(true); 
     return rootView; 
    } 

    // Also this goes in this class 
    public void resetInterface(){ 
     this.commentaire.setText(""); 
     this.addReleve.setEnabled(true); 
    } 
} 
+0

Thx it 's works great :) –

+0

멋진 사본 btw .. – vilpe89

2

귀하의 문제는 그 두 개의보기가 Framgent의 XML에 있고 당신은 단지 그 조각 사람들을 찾을 수 있다는 것입니다. 따라서 설명자addReleve 특정 항목을 조각 클래스로 이동하십시오.

public static class PlaceholderFragment extends Fragment { 

    // Variables moved from MainActivity to here 
    private EditText commentaire; 
    private Button addReleve; 

    public PlaceholderFragment() { 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.fragment_main, container, 
       false); 

     // To get views in fragment you need the base view (=rootView) 
     // Example 
     this.commentaire = (EditText) rootView.findViewById(R.id.commentaire); 

     // Put the code in here ! 
     // ... 

     return rootView; 
    } 

    // Also this goes in this class 
    public void resetInterface(){ 
     this.commentaire.setText(""); 
     this.addReleve.setEnabled(true); 
    } 
} 
+0

괜찮습니까?하지만 findViewByID는 조각 클래스에 존재하지 않습니다. 어떻게 접근 할 수 있습니까? –

+0

그래, 지금 편집 중이 야. – vilpe89

+0

자, 가야겠다. – vilpe89