2016-04-07 15 views
2

これを動作させるために2種類のコードを試しましたが、別のアクティビティに移動するためにボタンを押しても強制終了されます。私はフラグメントを使用しており、そのフラグメントのコードにボタンがありますが、動作させることができません。Onclickボタンフラグメント内のイベント

import android.content.Intent; 
import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.Button; 
import android.widget.RelativeLayout; 
import android.widget.TextView; 

import com.androidbelieve.activity.LoginActivity; 
import com.androidbelieve.helper.SQLiteHandler; 
import com.androidbelieve.helper.SessionManager; 

import java.util.HashMap; 

public class PrimaryFragment extends Fragment { 

private TextView txtName; 
private Button btnLogout; 

private SQLiteHandler db; 
private SessionManager session; 

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

    RelativeLayout rootView = (RelativeLayout) inflater.inflate(R.layout.primary_layout, container, false); 

    txtName = (TextView) rootView.findViewById(R.id.username); 
    btnLogout = (Button) rootView.findViewById(R.id.logout); 

    // SqLite database handler 
    db = new SQLiteHandler(getActivity().getApplicationContext()); 

    // session manager 
    session = new SessionManager(getActivity().getApplicationContext()); 

    if (!session.isLoggedIn()) { 
     logoutUser(); 
    } 
    // Fetching user details from SQLite 
    HashMap<String, String> user = db.getUserDetails(); 

    String name = user.get("name"); 

    // Displaying the user details on the screen 
    txtName.setText(name); 


    // Logout button click event 
    btnLogout.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      logoutUser(); 
     } 


    }); 

    Button button = (Button) rootView.findViewById(R.id.saleentry); 
    button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      updateDetail(); 
     } 
    }); 
    return rootView; 
} 

public void updateDetail() { 
    Intent intent = new Intent(getActivity(), SentFragment.class); 
    startActivity(intent); 
} 

ボタンを使用して別のページに移動しようとしましたが、常に失敗します。ここで
は私stacktrace..thisである私は

04-07 22 onclicklistener使用された場合の結果である:42:37.285 27777から27777/com.androidbelieve.drawerwithswipetabs> E/AndroidRuntime:致命的な例外:メイン プロセス:com.androidbelieve.drawerwithswipetabs、PID:27777 テーマ:テーマ:{デフォルト=オーバーレイ:システム、iconPack:システム、fontPkg:システム、com.android.systemui =オーバーレイ:システム} android.content.ActivityNotFoundException:明示的な>アクティビティクラス> {com.androidbelieve.drawerwithswipetabs/com.androidbelieve.drawerwithswipet> abs.SentFragment}を見つけることができません。 AndroidManifest.xmlでこのアクティビティを宣言しましたか? android.app.Activity.startActivityForResultでandroid.app.Instrumentation.execStartActivity(Instrumentation.java:1514) でandroid.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1801) (Activity.java:3930) ででandroid.app.Activity.startActivityForResult(Activity.java:3890) android.support.v4.app.FragmentActivity.startActivityFromFragment(FragmentActivity.java:849) android.support.v4.app.FragmentActivity $ HostCallbacks.onStartActivityFromFragment( FragmentActivity.java:907) android.support.v4.app.Fragment.startActivity(Fragment.java:916) at com.android信じられないけれど、私は、私が信じていることを信じています。私は信じています。私は信じています。私は信じています。 android.view.Viewで$ PerformClick.run(View.java:21156) とandroid.os.Handler.handleCallback(Handler.java:739) とandroid.os.Handler.dispatchMessage(Handler.java:95) android.os.Looper.loop(Looper.java:148) android.app.ActivityThread.main(ActivityThread.java:5456) at java.lang.reflect.Method.invoke(ネイティブメソッド)com.android.internal.os.ZygoteInit.mainでcom.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:726) で(ZygoteInit.java:616)まず、あなたを

+0

がSendFragment.classアクティビティまたはフラグメントでクリックしたときに、このコードを使うのか?フラグメントに対して 'startActivity'を使うことはできません。 –

+0

fragment @ AlexTownsend – Kumar

+0

私が言ったように、 'startActivity'でフラグメントを開始することはできません。あなたの 'SendFragment'を含む新しいアクティビティを作成し、' startActivity'を使用して起動するか、B)あなたの現在のアクティビティで 'PrimaryFragment'を' SendFragment'に置き換えます。 –

答えて

0

あなたのXMLレイアウトにフレームレイアウトを追加する必要があります。

<FrameLayout 
    android:id="@+id/frame_container" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    /> 

その後、

Button button = (Button) rootView.findViewById(R.id.saleentry); 
    button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) {   
      Fragment fragment = new SentFragment(); 
      FragmentManager fragmentManager = getActivity().getSupportFragmentManager(); 
      FragmentTransaction fragmentTransaction =  fragmentManager.beginTransaction(); 
      fragmentTransaction.replace(R.id.content_frame, fragment); 
      fragmentTransaction.remove(new PrimaryFragment()); 
      fragmentTransaction.addToBackStack(null); 
      fragmentTransaction.commit(); 
      } 
     });