android: cannot resolve method sendMessage(androd.os.message) - android-handler

I am stuck when learning handlers. The following is my simple code:
public class MainActivity extends AppCompatActivity {
Thread thread;
public Handler handler;
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.content_main);
thread = new Thread(new MyThread());
thread.start();
handler=new Handler() {
#Override
public void close() {
}
#Override
public void flush() {
}
#Override
public void publish(LogRecord record) {
}
};
}
class MyThread implements Runnable{
#Override
public void run(){
Message message=Message.obtain();
for(int i=0;i<10000;i++){
handler.sendMessage(message);
}
}
}
}
In the MyThread class, i was trying to type sendMessage after handler. but android studio does not show any such sendMessage option. still i typed it, then it shows in red. and says cannot resolve method.

You have imported wrong handler class
import java.util.logging.Handler;
And sendMessage method does not belong to this class
Try this import android.os.Handler;
Example:
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.ProgressBar;
public class MainActivity extends AppCompatActivity {
Thread thread;
Handler handler;
ProgressBar progressbar;
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
progressbar = (ProgressBar) findViewById(R.id.progressbar1);
thread = new Thread(new MyThread());
thread.start();
handler = new Handler() {
public void handleMessage(Message msg) {
progressbar.setProgress(msg.arg1);
};
};
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
}
class MyThread implements Runnable {
#Override
public void run() {
Message message = Message.obtain();
Log.d("message", "" + message);
for (int i = 0; i < 100; i++) {
message.arg1 = i;
handler.sendMessage(message);
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}

Related

NullPointerException on FragmentActivity.onBackPressed()

I have a problem on up back icon toolbar, when i click twice to go back app crash on nullpointer exception recalling the error on my getActivity().onBackPressed();
this is the fragment:
package com.example.android.evilsecretgallery;
import android.graphics.Bitmap;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.transition.TransitionInflater;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.bumptech.glide.Glide;
import com.bumptech.glide.request.target.SimpleTarget;
import com.bumptech.glide.request.transition.Transition;
import com.github.chrisbanes.photoview.PhotoView;
public class ImageDetailFragment extends Fragment {
private static final String EXTRA_IMAGE = "image_item";
private static final String EXTRA_TRANSITION_NAME = "transition_name";
public ImageDetailFragment() {
// Required empty public constructor
}
public static ImageDetailFragment newInstance(ImageModel image, String transitionName) {
ImageDetailFragment fragment = new ImageDetailFragment();
Bundle args = new Bundle();
args.putParcelable(EXTRA_IMAGE, image);
args.putString(EXTRA_TRANSITION_NAME, transitionName);
fragment.setArguments(args);
return fragment;
}
#Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
postponeEnterTransition();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
setSharedElementEnterTransition(TransitionInflater.from(getContext()).inflateTransition(android.R.transition.move));
}
}
#Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_image_detail, container, false);
Toolbar toolbar = getActivity().findViewById(R.id.toolbar);
toolbar.setTitle(" ES ");
toolbar.setTitleTextAppearance(getActivity(), R.style.EvilTextAppearance);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View view) {
getActivity().onBackPressed();
}
});
return rootView;
}
#Override
public void onViewCreated(View view, #Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
final ImageModel image = getArguments().getParcelable(EXTRA_IMAGE);
String transitionName = getArguments().getString(EXTRA_TRANSITION_NAME);
final PhotoView imageView = view.findViewById(R.id.detail_image);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
imageView.setTransitionName(transitionName);
}
Glide.with(getActivity())
.asBitmap()
.load(image.getUrl())
.into(new SimpleTarget<Bitmap>() {
#Override
public void onResourceReady(#NonNull Bitmap resource, #Nullable Transition<? super Bitmap> transition) {
startPostponedEnterTransition();
imageView.setImageBitmap(resource);
}
});
}
}
that go back in this activity:
package com.example.android.evilsecretgallery;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.view.MenuItem;
public class PagesActivity extends AppCompatActivity {
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_pages);
Toolbar toolbar = findViewById(R.id.toolbar);
toolbar.setTitle(" ES ");
toolbar.setTitleTextAppearance(this, R.style.EvilTextAppearance);
setSupportActionBar(toolbar);
if (getSupportActionBar()!=null){
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
}
getSupportFragmentManager()
.beginTransaction()
.add(R.id.content, RecyclerViewFragment.newInstance())
.commit();
}
#Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId()==android.R.id.home)
finish();
return super.onOptionsItemSelected(item);
}
}
then if I go back again to this activity below it gives me the error:
package com.example.android.evilsecretgallery;
import android.content.Intent;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
ImageView cover;
Toolbar toolbar;
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
toolbar = findViewById(R.id.toolbar);
toolbar.setTitle(" ES ");
toolbar.setTitleTextAppearance(this, R.style.EvilTextAppearance);
setSupportActionBar(toolbar);
cover = findViewById(R.id.cover_id);
cover.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View view) {
// Create a new intent to open the PagesActivity
Intent intent = new Intent(MainActivity.this, PagesActivity.class);
// Start the new activity
startActivity(intent);
}
});
Button siteButton = findViewById(R.id.site_button);
siteButton.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View v) {
// TODO Auto-generated method stub
String url = "http://www.evilsecret.it";
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(url));
startActivity(intent);
}
});
}
}
I have made some experiment and if i go back from pages activity it has no problem. I have to use different method in the fragment?
try clean and rebuild your project
It worked for me.

How to manage the life cycle in react native

I know when we need a nativeUI component we need override function
getName()and
createViewInstance(ThemedReactContext context) But when I use a dependence about map. The API need me use the component like this
#Override
protected void onDestroy() {
super.onDestroy();
//在activity执行onDestroy时执行mMapView.onDestroy(),
mMapView.onDestroy();
}
#Override
protected void onResume() {
super.onResume();
//在activity执行onResume时执行mMapView. onResume (),
mMapView.onResume();
}
#Override
protected void onPause() {
super.onPause();
//在activity执行onPause时执行mMapView. onPause (),
mMapView.onPause();
}
}
I override the function getetName()and
createViewInstance(ThemedReactContext context) like this
#Override
public String getName() {
return REACT_CLASS;
}
#Override
public MapView createViewInstance(ThemedReactContext context) {
final ThemedReactContext mapContext = context;
bdMapViewInstance = new MapView(context);
bdMapViewInstance.getMap().setOnMarkerClickListener(new BaiduMap.OnMarkerClickListener() {
#Override
public boolean onMarkerClick(Marker marker) {
ShopResponseInfo shopResponseInfo = (ShopResponseInfo) marker.getExtraInfo().getSerializable(INDENTIFY);
if(shopResponseInfo != null){
String id = shopResponseInfo.getShop_id() + "";
String shop_name = shopResponseInfo.getShop_name() + "";
onReceiveNativeEvent(mapContext,bdMapViewInstance,id,shop_name);
}
return true;
}
});
return bdMapViewInstance;
}
Finally There are some performance question in my app. I don't know whether it is affect on my app's performance. And I don't know how to meet the official suggestion. I don't know how to control the life cycle of nativeUI component for android. Very Thanks.
You can listen to activity life cycle like this in your createViewInstance. You probably want to keep track of listeners and remove them appropriately based on you keep track of your instances.
LifecycleEventListener lifecycleEventListener = new LifecycleEventListener() {
#Override
public void onHostResume() {
}
#Override
public void onHostPause() {
}
#Override
public void onHostDestroy() {
}
};
getReactApplicationContext().addLifecycleEventListener(lifecycleEventListener);
An example of TestModule as explained in the docs of RN. PS Don't forget to use implements LifecycleEventListener
package com.testpackage;
import com.facebook.react.bridge.Callback;
import com.facebook.react.bridge.NativeModule;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.bridge.LifecycleEventListener;
import java.util.Map;
import java.util.HashMap;
public class TestModule extends ReactContextBaseJavaModule implements LifecycleEventListener {
public TestModule(ReactApplicationContext reactContext) {
super(reactContext);
reactContext.addLifecycleEventListener(this);
}
#Override
public void onHostResume() {
}
#Override
public void onHostPause() {
}
#Override
public void onHostDestroy() {
}
}

Cannot resolve Symbol variables - Tearing my hair out

I am trying to follow a tutorial and have got stuck with what I figure to be the last error before completion.
Can someone tell me what I am doing wrong with these variables?
Including both activities below, if any other code is applicable, I am happy to provide it.
Error codes read:
Error:(21, 56) error: cannot find symbol variable pickupLine
Error:(24, 9) error: cannot find symbol variable retryButton
Error:Execution failed for task ':app:compileDebugJavaWithJavac'.
Compilation failed; see the compiler error output for details.
MainActivity.java:
package io.wavey.pickuplesson1;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Grab clean button so we can do stuff with it!
Button cleanButton = (Button) findViewById(R.id.cleanButton);
final Button dirtyButton = (Button) findViewById(R.id.dirtyButton);
final String pickupLine = "You had me at hello world";
//This is a Callback.
cleanButton.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View v) {
sendLine(pickupLine);
}
});
}
//Send to activity
private void sendLine(String pickupLine) {
Intent intent = new Intent(this, LineActivity.class);
intent.putExtra("Pickup Line", pickupLine);
startActivity(intent);
}
}
LineActivity.java:
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_line);
Bundle pickupData = getIntent().getExtras();
if (pickupData == null) {
return;
}
String receivedPickupLine = pickupData.getString("Pickup Line");
TextView newLine = (TextView) findViewById(R.id.pickupLine);
newLine.setText(receivedPickupLine);
retryButton.setOnClicklistener (new View.OnClickListener() {
#Override
public void onClick(View v) {
finish();
}
});
}
}
LineActivity.java:

Getting Java javafx.fxml.LoadException: in IntelliJ and JavaFX scene builder

This is my main class
package FSM;
import java.io.IOException;
import FSM.view.PersonEditDetailsControler;
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.BorderPane;
import javafx.stage.Modality;
import javafx.stage.Stage;
import FSM.model.Person;
import FSM.view.PersonOverviewController;
public class Main extends Application {
private Stage primaryStage;
private BorderPane rootLayout;
private ObservableList<Person> personData= FXCollections.observableArrayList();
public Main() {
// Add some sample data
System.out.println("1 prit");
personData.add(new Person("Hans", "Muster"));
personData.add(new Person("Ruth", "Mueller"));
personData.add(new Person("Heinz", "Kurz"));
personData.add(new Person("Cornelia", "Meier"));
personData.add(new Person("Werner", "Meyer"));
personData.add(new Person("Lydia", "Kunz"));
personData.add(new Person("Anna", "Best"));
personData.add(new Person("Stefan", "Meier"));
personData.add(new Person("Martin", "Mueller"));
}
public ObservableList<Person> getPersonData() {
return personData;
}
#Override
public void start(Stage primaryStage) throws Exception{
System.out.println("2 print");
this.primaryStage = primaryStage;
primaryStage.setTitle("AddressApp");
initRootLayout();
showPersonOverview();
}
public void initRootLayout() {
try {
// Load root layout from fxml file.
System.out.println("rootLayout");
FXMLLoader loader = new FXMLLoader();
System.out.println("geting rootlayout");
loader.setLocation(Main.class.getResource("/FSM/view/RootLayout.fxml"));
System.out.println("setting borderPane");
rootLayout = (BorderPane) loader.load();
System.out.println("loaded");
// Show the scene containing the root layout.
Scene scene = new Scene(rootLayout);
System.out.println("new scene 1");
primaryStage.setScene(scene);
System.out.println("set scene");
primaryStage.show();
System.out.println("rootLayout End 1");
} catch (IOException e) {
System.out.println("rootLayout Exception");
e.printStackTrace();
}
}
public void showPersonOverview() {
try {
System.out.println("3 Print");
// Load person overview.
FXMLLoader loader = new FXMLLoader();
System.out.println("getting Resouurce");
loader.setLocation(Main.class.getResource("/FSM/view/PersonOverview.fxml"));
System.out.println("got Resouurce");
AnchorPane personOverview = (AnchorPane) loader.load();
System.out.println("loading Anchor");
// Set person overview into the center of root layout.
rootLayout.setCenter(personOverview);
System.out.println("setting person overview");
PersonOverviewController controller = loader.getController();
controller.setMain(this);
} catch (IOException e) {
e.printStackTrace();
System.out.println("3 Print exception");
}
}
public boolean showPersonEditDialog(Person person){
try {
System.out.println("4 print");
FXMLLoader loader=new FXMLLoader();
loader.setLocation(Main.class.getResource("/FSM/view/PersonEditDetails.fxml"));
AnchorPane anchorPane=(AnchorPane)loader.load();
rootLayout.setCenter(anchorPane);
Stage dialogStage = new Stage();
dialogStage.setTitle("Edit Person");
dialogStage.initModality(Modality.WINDOW_MODAL);
dialogStage.initOwner(primaryStage);
Scene scene = new Scene(anchorPane);
dialogStage.setScene(scene);
PersonEditDetailsControler controllerr = loader.getController();
controllerr.setDialogStage(dialogStage);
controllerr.setPerson(person);
dialogStage.showAndWait();
return controllerr.isOKClicked();
}catch (Exception e){
e.printStackTrace();
System.out.println("4th print");
return false;
}
}
public Stage getPrimaryStage() {
return primaryStage;
}
public static void main(String[] args) {
launch(args);
}
}
And this is PersonOverViewController class
package FSM.view;
import javafx.fxml.FXML;
import javafx.scene.control.Label;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import FSM.model.Person;
import FSM.Main;
import javafx.scene.web.WebEvent;
import java.lang.Object.*;
/**
* Created by mfaseem on 6/9/2015.
*/
public class PersonOverviewController {
#FXML
private TableView<Person> PersonTable;
#FXML
private TableColumn<Person,String> fnameColumn;
#FXML
private TableColumn<Person, String> lnameColumn;
#FXML
private Label fnameLabel;
#FXML
private Label lnameLabel;
#FXML
private Label streetLabel;
#FXML
private Label postelCodeLabel;
#FXML
private Label CityLabel;
#FXML
private Label dobLabel;
private Main main;
public PersonOverviewController(){
}
#FXML
private void initialize(){
fnameColumn.setCellValueFactory(CellData -> CellData.getValue().fnameProperties());
lnameColumn.setCellValueFactory(CellData -> CellData.getValue().lnameProperties());
showPersonDetails(null);
PersonTable.getSelectionModel().selectedItemProperty().addListener(
(observable, oldValue, newValue) ->showPersonDetails(newValue));
}
#FXML
private void deleteHandler(){
int selectedIndex=PersonTable.getSelectionModel().getSelectedIndex();
if(selectedIndex>=0){
PersonTable.getItems().remove(selectedIndex);
}else {
// ALERT alert = new Alert(AlertType.WARNING);
//alert.initOwner(mainApp.getPrimaryStage());
// alert.setTitle("No Selection");
// alert.setHeaderText("No Person Selected");
// alert.setContentText("Please select a person in the table.");
// alert.showAndWait();
}
}
#FXML
private void handleNewPerson() {
Person tempPerson = new Person();
boolean okClicked = main.showPersonEditDialog(tempPerson);
if (okClicked) {
main.getPersonData().add(tempPerson);
}
}
#FXML
private void handleEditPerson() {
Person selectedPerson = PersonTable.getSelectionModel().getSelectedItem();
if (selectedPerson != null) {
boolean okClicked = main.showPersonEditDialog(selectedPerson);
if (okClicked) {
showPersonDetails(selectedPerson);
}
} else {
/* Nothing selected.
Alert alert = new Alert(AlertType.WARNING);
alert.initOwner(mainApp.getPrimaryStage());
alert.setTitle("No Selection");
alert.setHeaderText("No Person Selected");
alert.setContentText("Please select a person in the table.");
alert.showAndWait();
*/
}
}
public void setMain(Main main){
this.main=main;
PersonTable.setItems(main.getPersonData());
}
private void showPersonDetails(Person person){
if(person !=null){
fnameLabel.setText(person.getFname());
lnameLabel.setText(person.getLname());
streetLabel.setText(person.getStreet());
CityLabel.setText(person.getCity());
dobLabel.setText(person.getBirthDate().toString());
postelCodeLabel.setText(String.valueOf(person.getPostalCode()));
}else{
fnameLabel.setText("");
lnameLabel.setText("");
streetLabel.setText("");
CityLabel.setText("");
dobLabel.setText("");
postelCodeLabel.setText("");
}
}
}
And the out put is
Device "Intel(R) Q45/Q43 Express Chipset" (\\.\DISPLAY1) initialization failed :
WARNING: bad driver version detected, device disabled. Please update your driver to at least version 8.15.10.2302
1 prit
2 print
rootLayout
geting rootlayout
setting borderPane
loaded
new scene 1
set scene
javafx.fxml.LoadException: /C:/Users/mfaseem/IdeaProjects/AddressApp/out/production/AddressApp/FSM/view/PersonOverview.fxml:7
at javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2595)
at javafx.fxml.FXMLLoader.access$700(FXMLLoader.java:104)
Can any one help me thanks in advance

SurfaceView Tutorial problems

I found a tutorial and it looks like this:
package com.djrobotfreak.SVTest;
public class Tutorial2D extends Activity {
#Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(new Panel(this));
}
class Panel extends SurfaceView implements SurfaceHolder.Callback {
private TutorialThread _thread;
public Panel(Context context) {
super(context);
getHolder().addCallback(this);
_thread = new TutorialThread(getHolder(), this);
}
#Override
public void onDraw(Canvas canvas) {
Bitmap _scratch = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
canvas.drawColor(Color.BLACK);
canvas.drawBitmap(_scratch, 10, 10, null);
}
#Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
// TODO Auto-generated method stub
}
#Override
public void surfaceCreated(SurfaceHolder holder) {
_thread.setRunning(true);
_thread.start();
}
#Override
public void surfaceDestroyed(SurfaceHolder holder) {
// simply copied from sample application LunarLander:
// we have to tell thread to shut down & wait for it to finish, or else
// it might touch the Surface after we return and explode
boolean retry = true;
_thread.setRunning(false);
while (retry) {
try {
_thread.join();
retry = false;
} catch (InterruptedException e) {
// we will try it again and again...
}
}
}
}
class TutorialThread extends Thread {
private SurfaceHolder _surfaceHolder;
private Panel _panel;
private boolean _run = false;
public TutorialThread(SurfaceHolder surfaceHolder, Panel panel) {
_surfaceHolder = surfaceHolder;
_panel = panel;
}
public void setRunning(boolean run) {
_run = run;
}
#Override
public void run() {
Canvas c;
while (_run) {
c = null;
try {
c = _surfaceHolder.lockCanvas(null);
synchronized (_surfaceHolder) {
_panel.onDraw(c);
}
} finally {
// do this in a finally so that if an exception is thrown
// during the above, we don't leave the Surface in an
// inconsistent state
if (c != null) {
_surfaceHolder.unlockCanvasAndPost(c);
}
}
}
}
}
}
and it does not work, no matter what I do. I am trying to convert my code to surfaceview but I cant find any surfaceview programs that even work (besides the android-provided ones). Does anyone know what the error even is saying?
Here is my logcat info: http://shrib.com/oJB5Bxqs
If you get a ClassNotFoundException, you should check the Manifest file.
Click on the Application tab and look on the botton right side under "Attributes for".
If there is a red X mark under your Class Name, then click on the "Name" link and locate the correct class to load.