2016-07-15 11 views
1

みんなOnClickListenerする:AndroidのSDKどのように私はこのコードで助けが必要

public View.OnClickListener btnGetLastLocationOnClickListener = new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 

     if (mGoogleApiClient != null) { 
      if (mGoogleApiClient.isConnected()) { 
       getMyLocation(); 
      } else { 
       Toast.makeText(AddEditActivity.this, 
         "!mGoogleApiClient.isConnected()", Toast.LENGTH_LONG).show(); 
      } 
     } else { 
      Toast.makeText(AddEditActivity.this, 
        "mGoogleApiClient == null", Toast.LENGTH_LONG).show(); 
     } 
    } 
}; 

するので、私がやりたいことは、私はbtnGetLocationをクリックすると、このコードは動作するはずですが、私は起動時に代わりのコードが自動的に動作しますアクティビティのように、ボタンをクリックしたときにはどうすればいいですか?

私は皆さんが問題を理解してくれることを願っています。私は新しいAndroidデベロッパーですので、私はまだ私の愚かな質問のために私を許しています。あなたがきたView.onClickListenerオブジェクトが関連付けられていないですので、

TextView txtmylink; 
GoogleApiClient mGoogleApiClient; 
Location mLastLocation; 
Button getlastlocation; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    txtmylink = (TextView) findViewById(R.id.mylink); 
    getlastlocation = (Button) findViewById(R.id.getlastlocation); 
    getlastlocation.setOnClickListener(getlastlocationOnClickListener); 

    // Create an instance of GoogleAPIClient. 
    if (mGoogleApiClient == null) { 
     mGoogleApiClient = new GoogleApiClient.Builder(this) 
       .addConnectionCallbacks(this) 
       .addOnConnectionFailedListener(this) 
       .addApi(LocationServices.API) 
       .build(); 
    } 
} 

View.OnClickListener getlastlocationOnClickListener = new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 

     if (mGoogleApiClient != null) { 
      if (mGoogleApiClient.isConnected()) { 
       getMyLocation(); 
      } else { 
       Toast.makeText(MainActivity.this, 
         "!mGoogleApiClient.isConnected()", Toast.LENGTH_LONG).show(); 
      } 
     } else { 
      Toast.makeText(MainActivity.this, 
        "mGoogleApiClient == null", Toast.LENGTH_LONG).show(); 
     } 
    } 
}; 

private void getMyLocation() { 
    try { 
     /* code should explicitly check to see if permission is available 
     (with 'checkPermission') or explicitly handle a potential 'SecurityException' 
     */ 
     mLastLocation = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient); 
     if (mLastLocation != null) { 
      txtmylink.setText(String.valueOf("http://maps.google.com/maps?q=") + 
        String.valueOf(mLastLocation.getLatitude()) + 
        String.valueOf(",")+ String.valueOf(mLastLocation.getLongitude())); 

     } else { 
      Toast.makeText(MainActivity.this, 
        "mLastLocation == null", 
        Toast.LENGTH_LONG).show(); 
     } 
    } catch (SecurityException e) { 
     Toast.makeText(MainActivity.this, 
       "SecurityException:\n" + e.toString(), 
       Toast.LENGTH_LONG).show(); 
    } 
} 

@Override 
protected void onStart() { 
    mGoogleApiClient.connect(); 
    super.onStart(); 
} 

@Override 
protected void onStop() { 
    mGoogleApiClient.disconnect(); 
    super.onStop(); 
} 

@Override 
public void onConnected(@Nullable Bundle bundle) { 
    getMyLocation(); 
} 

@Override 
public void onConnectionSuspended(int i) { 
    Toast.makeText(MainActivity.this, 
      "onConnectionSuspended: " + String.valueOf(i), 
      Toast.LENGTH_LONG).show(); 
} 

@Override 
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) { 
    Toast.makeText(MainActivity.this, 
      "onConnectionFailed: \n" + connectionResult.toString(), 
      Toast.LENGTH_LONG).show(); 
} 

}

+1

のようなのonClickを持つことになります。 – Rashin

答えて

1

この試みる動作させるためにonCreate()方法でこのコードを追加することができ、次のコード

btnGetLocation = (Button) findViewById(R.id.btnGetLocation); // or whatever you called the button 
btnGetLocation.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     if (mGoogleApiClient != null) { 
      if (mGoogleApiClient.isConnected()) { 
       getMyLocation(); 
      } else { 
       Toast.makeText(AddEditActivity.this, 
        "!mGoogleApiClient.isConnected()", Toast.LENGTH_LONG).show(); 
      } 
      } else { 
       Toast.makeText(AddEditActivity.this, 
        "mGoogleApiClient == null", Toast.LENGTH_LONG).show(); 
      } 
    } 
} 

注使用して、それを達成することができます:それでも場合

public void onClick(View v) { 
      if (view.getId() == R.id.btnGetLocation) 
      if (mGoogleApiClient != null) { 
       if (mGoogleApiClient.isConnected()) { 
        getMyLocation(); 
       } else { 
        Toast.makeText(AddEditActivity.this, 
         "!mGoogleApiClient.isConnected()", Toast.LENGTH_LONG).show(); 
       } 
       } else { 
        Toast.makeText(AddEditActivity.this, 
         "mGoogleApiClient == null", Toast.LENGTH_LONG).show(); 
       } 
     } 

をあなたのコードは次のように書く:

あなたの活動mu STは、あなたの完全なクラスのコードを投稿してくださいOnClickListenerを実装し、

btnGetLocation.setOnClickListener(this) 

、あなたがこの

public void onClick(View v) { 
       if (view.getId() == R.id.btnGetLocation) 
       if (mGoogleApiClient != null) { 
        if (mGoogleApiClient.isConnected()) { 
         getMyLocation(); 
        } else { 
         Toast.makeText(AddEditActivity.this, 
          "!mGoogleApiClient.isConnected()", Toast.LENGTH_LONG).show(); 
        } 
        } else { 
         Toast.makeText(AddEditActivity.this, 
          "mGoogleApiClient == null", Toast.LENGTH_LONG).show(); 
        } 
      } 
+1

ありがとうございましたが、まだ私はあなたが私にそれを感謝するのを助けることができる場合は、私は、活動を開始した値が読み込まれる同じ問題を抱えています。 –

+0

このヒントを使用してください:btnGetLocation.setOnClickListener(this)...? – aurelianr

+0

はい、このコードの下に赤い線があります(このコードは btnGetLocationです)。このvoidには が含まれている必要があります。protected void onCreate(savedBundle savedInstanceState –

2

ここで全体のコードは次のとおりです。

はアップデート***あなた

に感謝しますまだ何かに書かれている。したがって、アクティビティが開始されると、リスナのコードが実行されます。特定のビューに「A」と答えてクリックに反応させたい場合は、View.onClickListenerを関連付けます。だからあなたのケースでは、次のように追加します。

yourbutton.setOnClickListener(btnGetLastLocationOnClickListener) 

あなたはButtonビューにyourbuttonを束縛ていることを確認してください。

+0

100%ありがとう、今、ボタンが機能していますが、アクティビティを自動的に開始して値を取得してテキストボックスに入れます。ボタンをクリックしても同じことが行われるので、あなたが助けてくれるならば、私は幸せ以上に価値を得ることができます。 –

0

あなたはそれが

+0

それは働かなかったが、どんな方法の男にも感謝する。 –

+0

@ rooot_999 –

+0

@not_again_stackoverflowの回答が私のために働いていますが、私は自動的に値を取得し、それをテキストボックスに入れ、ボタンをクリックしても同じことをします私は値を得るためにボタンだけを欲しい、あなたが助けることができれば幸せ以上になるでしょう –

関連する問題