2013-09-02 1 views
0
mainListView.setOnItemClickListener(new OnItemClickListener() { 
     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(); 
      tcpSocket.SendMessage(FramePacket.FramesendMessageCmd(item)); 


     } 
    }); 

여기 내 코드입니다. 메시지 항목을 클릭 한 후 다른 활동을 시작하고 싶습니다. 나는 많은 것을 시도했다. 하지만 일하지 않아. 아무도 나를 도와주세요. 이 문제를 해결하는 방법. 나는 많이 노력했다. 그것은 nullpointer 예외 오류를 제공합니다. 여기토스트 메시지가 표시된 후 다른 클래스 활동을 실행하는 방법은 무엇입니까?

09-02 13:36:44.364: E/AndroidRuntime(28601): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.dispatchsystem/com.dispatchsystem.JobStartedScreen}: java.lang.NullPointerException 
09-02 13:36:44.364: E/AndroidRuntime(28601): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1967) 
09-02 13:36:44.364: E/AndroidRuntime(28601): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1992) 
09-02 13:36:44.364: E/AndroidRuntime(28601): at android.app.ActivityThread.access$600(ActivityThread.java:127) 
09-02 13:36:44.364: E/AndroidRuntime(28601): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1158) 
09-02 13:36:44.364: E/AndroidRuntime(28601): at android.os.Handler.dispatchMessage(Handler.java:99) 
09-02 13:36:44.364: E/AndroidRuntime(28601): at android.os.Looper.loop(Looper.java:137) 
09-02 13:36:44.364: E/AndroidRuntime(28601): at android.app.ActivityThread.main(ActivityThread.java:4448) 
09-02 13:36:44.364: E/AndroidRuntime(28601): at java.lang.reflect.Method.invokeNative(Native Method) 
09-02 13:36:44.364: E/AndroidRuntime(28601): at java.lang.reflect.Method.invoke(Method.java:511) 
09-02 13:36:44.364: E/AndroidRuntime(28601): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:823) 
09-02 13:36:44.364: E/AndroidRuntime(28601): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:590) 
09-02 13:36:44.364: E/AndroidRuntime(28601): at dalvik.system.NativeStart.main(Native Method) 
09-02 13:36:44.364: E/AndroidRuntime(28601): Caused by: java.lang.NullPointerException 
09-02 13:36:44.364: E/AndroidRuntime(28601): at com.dispatchsystem.JobStartedScreen.onCreate(JobStartedScreen.java:65) 
09-02 13:36:44.364: E/AndroidRuntime(28601): at android.app.Activity.performCreate(Activity.java:4465) 
09-02 13:36:44.364: E/AndroidRuntime(28601): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 
09-02 13:36:44.364: E/AndroidRuntime(28601): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1931) 

jobstartedscreen

public class JobStartedScreen extends Activity implements OnMessageReceived{ 

TextView tv_JobNo; 
static TextView tv_JobKm; 
static TextView tv_JobwaitngTime; 
TextView tvjobstartedtime; 
Button btn_jobFinsh; 
Button btn_msg; 
boolean _ThreadFlag=false; 
boolean _ResumeThread=false; 
private Window w; 
Thread t=null; 
String tag="Jobstartscreen"; 
private static MyThread sThread; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    setContentView(R.layout.jobstartedscreen); 
    if (savedInstanceState==null){ 
     Contsants.VehicleStartOdometer=0.0F; 
     sThread=new MyThread(mHandler); 
     sThread.start(); 
    } 
    StateManager.DeviceStatus=StateManager.hired; 
    tcpSocket.setmMessageListener(this); 
    tv_JobNo =(TextView)findViewById(R.id.tvJobid); 
    Bundle bundle = getIntent().getExtras(); 
    tv_JobNo.setText(bundle.get("Jobno").toString()); 

    tv_JobKm =(TextView)findViewById(R.id.tvjobKm); 
    tv_JobwaitngTime =(TextView)findViewById(R.id.tvjobWaittime); 

    tv_JobwaitngTime.setText("Waiting Time : 0:0"); 
    //update the Km every 1 sec 
    Log.d(tag, "On created "+_ResumeThread); 
    tvjobstartedtime=(TextView)findViewById(R.id.tv_jobStarttime); 
    tvjobstartedtime.setText("Start Time :"+Contsants.jobStartTime); 

    btn_jobFinsh= (Button)findViewById(R.id.btn_jobFinsh); 
    btn_jobFinsh.setOnClickListener(onClickListener); 

    btn_msg= (Button)findViewById(R.id.btn_msg); 
    btn_msg.setOnClickListener(onClickListener); 


    // TODO Auto-generated method stub 
} 
@Override 
public void onStart() 
{ 
    super.onStart(); 

} 
@Override 
public void onResume() 
{ 
    super.onResume(); 
    w = this.getWindow(); 
    w.addFlags(LayoutParams.FLAG_DISMISS_KEYGUARD); 
    w.addFlags(LayoutParams.FLAG_SHOW_WHEN_LOCKED); 
    w.addFlags(LayoutParams.FLAG_TURN_SCREEN_ON); 
    Log.d("job start on resume",_ThreadFlag+" "+_ResumeThread); 
} 

@Override 
protected void onRestoreInstanceState(Bundle savedInstanceState){ 
    super.onRestoreInstanceState(savedInstanceState); 
    if (sThread.isAlive()){ 
     sThread.setHandler(mHandler); 
    } 
} 

@Override 
protected void onDestroy(){ 
    super.onDestroy(); 
    if (sThread.isAlive()){ 
     sThread.setHandler(null); 
    } 
} 

boolean _Paused=false; 
@Override 
public void onPause() 
{ 
    super.onPause(); 
    _Paused=true; 
} 
@Override 
public void onBackPressed() { 
    // do nothing. 
} 

private OnClickListener onClickListener = new OnClickListener() { 
    @Override 
    public void onClick(final View v) { 
     switch(v.getId()){ 
     case R.id.btn_jobFinsh: 
      //DO something 
      _ThreadFlag=true; 
      StateManager.JobStatus=StateManager.jobstatus_dropped; 
      tcpSocket.SendMessage(FramePacket.FrameJobStatusCmd(Contsants.Jobno,StateManager.JobStatus)); 
      SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yy HH:mm"); 
      String currentDateandTime = sdf.format(new Date()); 
      Contsants.jobEndTime=currentDateandTime; 
      Intent i = new Intent(getApplicationContext(),JobCompletionScreen.class); 
      startActivity(i); 
      sThread.setHandler(null); 
      finish(); 
      break; 
     case R.id.btn_msg: 
      /*Intent iNAV = new Intent(Intent.ACTION_VIEW, 
        Uri.parse("http://maps.google.com/maps?saddr=12.920629,77.610643&daddr=12.990346, 77.589521") 
        ); 
      startActivity(iNAV);*/ 
      Intent imsg = new Intent(getApplicationContext(),MessageList.class); 
      startActivity(imsg); 
      break; 

     } 
    } 
}; 

static Handler mHandler =new Handler(){ 
    @Override 
    public void handleMessage(Message message){ 
     //update UI 
     Bundle b = message.getData(); 
     float odometer = b.getFloat("My Odometer"); 
     int waiting =b.getInt("waiting Time"); 
     tv_JobKm.setText(odometer+" Km"); 
     tv_JobwaitngTime.setText("Waiting Time : "+Integer.toString((waiting/60)) +":"+ Integer.toString((waiting% 60))); 
    } 
}; 

private class MyThread extends Thread{ 
    private Handler mHandler; 

    public MyThread(Handler handler){ 
     super(); 
     mHandler=handler; 
    } 

    @Override 
    public void run(){ 
     //some long operation 
     if (mHandler!=null) 
      mHandler.sendEmptyMessage(0); 

     _ResumeThread=true; 
     while(!_ThreadFlag) 
     { 
      try { 
       Thread.sleep(1000); 
       Message msg = new Message(); 
       Bundle b = new Bundle(); 
       b.putFloat("My Odometer", (float) (gpsdataElements.Distance-Contsants.jobStartKm)); 
       if(gpsdataElements.Speed==0.0) 
       { 
        Contsants.cont_WaitingTimeInSec++; 
       } 
       b.putInt("waiting Time", Contsants.cont_WaitingTimeInSec); 
       // tv_JobwaitngTime.setText("Waiting Time : "+Integer.toString((Contsants.cont_WaitingTimeInSec/60)) +":"+ Integer.toString((Contsants.cont_WaitingTimeInSec % 60))); 
       //send message to the handler with the current message handler   
       msg.setData(b); 
       // send message to the handler with the current message handler 
       mHandler.sendMessage(msg); 

      } catch (Exception e) { 
       Log.v("Error", e.toString()); 
      } 
     } 
    } 

    public void setHandler(Handler handler){ 
     mHandler=handler; 
    } 
} 

@Override 
public void messageReceived(String message) { 
    // TODO Auto-generated method stub 
    //Toast.makeText(getApplicationContext(), "Job StartScreem : Recived data :"+message, Toast.LENGTH_LONG).show();   
} 

} 
+0

페이지의 [목록보기를 열고 새로운 활동의 onclick (HTTP를 이해하는 HERE 이동 : //stackoverflow.com/questions/6660126/listview-open-new-activity-onclick) –

+0

listItem 클릭 또는 Toast 메시지 클릭에 대한 활동을 변경하고 싶습니다. – Jilberta

+0

하나는 괜찮습니다.하지만 메시지 항목을 클릭하면 다른 활동을 시작하고 싶습니다. 내가 어떻게 할 수 있지. 이것을 위해 루프 condtion을 작성하고 싶습니까? – Ramesh

답변

1

당신은 측면에서 핸들러를 사용할 수 onclick을

mainListView.setOnItemClickListener(new OnItemClickListener() { 
     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(); 
      tcpSocket.SendMessage(FramePacket.FramesendMessageCmd(item)); 
      new Handler().postDelayed(new Runnable() { 

       @Override 
       public void run() { 
        MyAct.this.startActivity(new Intent(MyAct.this,Abc.class)); 

       } 
      }, 5000); 

     } 
    }); 

공공 무효 실행() { 여기에 다음 활동 instert

+0

오류 메시지가 표시됩니다. NullPointerException @Sumeet kumar – Ramesh

+0

오류 메시지를 게시 할 수 있습니까? –

0

당신의 축배를 보여주는 후

catlog 오류가 않습니다. 당신의 AnotherActivity.class에 의해 지정이 다른 활동에 당신을 데려 갈 것이다

mainListView.setOnItemClickListener(new OnItemClickListener() { 
    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(); 

     Intent intent= new Intent(youractivitycontext, AnotherActivity.class); 
     startActivity(intent); 

    } 
}); 

:로

Intent intent= new Intent(youractivitycontext, AnotherActivity.class); 
startActivity(intent); 
+0

강제 종료가 없습니다. NULLPOINTEReXCEPTION @ CRUSADER – Ramesh

+0

게시 : logcat pls – Ritaban

+0

내 코드를 편집하고 logcat을 (를) 추가했습니다. @ Ritaban – Ramesh

0

편집 코드. 데이터를 다음 활동으로 전달할 수도 있습니다. 그렇게하려는 것 같습니다. 그것을위한 몇 가지 방법이 있습니다. 텐트

+0

그것은 logcat 오류 위에 내게 준다. 도와주세요. – Ramesh

+0

내 코드에는 10 개 이상의 클래스가 있습니다. 내가 클릭하면 jobstartedscreen.class를 제외한 다른 모든 활동으로 이동한다는 의미입니다. 나는 그 오류가 어디 있는지 알지 못한다. – Ramesh

+0

@ user2738655 오류에 대한 설명은 무엇입니까? 당신 logcat을 보여줄 수 있습니까? 이 의도 물건 이외의 것이어야합니다. 확인 해보자. 로그 코트를 보여주십시오. – Zeeshan

관련 문제